cjoj1491 【NOIP2001】GCD和LCM问题

来源:互联网 发布:政治考试软件 编辑:程序博客网 时间:2024/04/29 09:19
//这道题开始想着的是去枚举那两个数,是一个n^2的算法//但正解其实很tm容易,就是我们要根据那个gcd和lcm,用o(n)解决这个问题 //主要是要利用两数之积=lcm*gcd  /*#include<cstdio>#include<cstdlib>using namespace std;inline int gcd(int x,int y){return y?gcd(y,x%y):x;}inline int lcm(int x,int y){return x*y/gcd(x,y);}  int main(){int x0,y0,ans=0;scanf("%d %d",&x0,&y0);for(int i=x0;i<y0;i++) for(int j=i+1;j<=y0;j++) if(gcd(i,j)==x0&&lcm(i,j)==y0) ans++;printf("%d\n",ans<<1);return 0; }*/    #include<cstdio>#include<cstdlib>#include<ctime>#include<cstring>   #include<iostream>using namespace std;inline long long gcd(long long x,long long y) {return y?gcd(y,x%y):x;}int main(){long long x0,y0,ans=0;scanf("%lld%lld",&x0,&y0);for(long long i=x0;i<=y0;i++){long long q=x0*y0/i;long long xzz=gcd(q,i);if(q*i==x0*y0&&xzz==x0) ans++;}printf("%lld\n",ans);} 

大家多多支持cjoj哦 
http://oj.changjun.com.cn
1 2