华师一附中OI组

标题: P1029 最大公约数和最小公倍数问题 [打印本页]

作者: universehyf    时间: 2018-11-24 21:17
标题: P1029 最大公约数和最小公倍数问题
https://www.luogu.org/problemnew/show/P1029题目描述
输入22个正整数x_0,y_0(2 \le x_0<100000,2 \le y_0<=1000000)x0​,y0​(2≤x0​<100000,2≤y0​<=1000000),求出满足下列条件的P,QP,Q的个数
条件:
试求:满足条件的所有可能的22个正整数的个数.
输入输出格式输入格式:

22个正整数x_0,y_0x0​,y0​

输出格式:

11个数,表示求出满足条件的P,QP,Q的个数


作者: universehyf    时间: 2018-11-24 21:17
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. using namespace std;
  5. typedef long long ll;
  6. #define FOR(i,a,b)for(register ll i=a;i<=b;++i)
  7. long long s,r1;
  8. ll gcd(ll m,ll n){return n==0?m:gcd(n,m%n);}
  9. int x,y,ans;
  10. int main()
  11. {
  12.     scanf("%d%d",&x,&y);
  13.     if(y%x){cout<<0;return 0;}
  14.     ll zs=y/x;
  15.     ll sqrtt=sqrt(zs);
  16.     FOR(i,1,sqrtt)
  17.     {
  18.         if(zs%i!=0) continue;
  19.         if(gcd(i,zs/i)==1) ans++;
  20.     }
  21.     ans=ans<<1;
  22.     cout<<ans;
  23.     return 0;
  24. }
复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2