标签:return NOIP 公倍数 long int 最大公约数 2001 include
题目链接(码学堂,数据弱)
摘要:
1.P,Q是正整数(unsigned)
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
分析1:
暴力枚举,看这两个数的最大公约数和最小公倍数是否与题目一样
1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 using namespace std; 5 long long p,q; 6 long long ans; 7 long long lcm(int x,int y) 8 { 9 long long xx=x/p; 10 long long yy=y/p; 11 return xx*yy*p; 12 } 13 long long gcd(long long x,long long y) 14 { 15 if(x%y==0) return y; 16 else return gcd(y,x%y); 17 } 18 int main() 19 { 20 cin>>p>>q; 21 for(long long i=0;i<=q;i+=p)//优化细节1:跳跃式枚举 22 for(long long j=0;j<=q;j+=p) 23 if(lcm(i,j)==q&&gcd(i,j)==p) 24 { 25 ans++; 26 if(i==j) ans--;//注意位置!//平方的特殊情况! 27 } 28 cout<<ans; 29 return 0; 30 }
标签:return,NOIP,公倍数,long,int,最大公约数,2001,include 来源: https://www.cnblogs.com/xdzxxintong/p/16610896.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。