好贷网好贷款

【 2028 Lowest Common Multiple Plus】

发布时间:2016-12-4 7:51:27 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"【 2028 Lowest Common Multiple Plus】",主要涉及到【 2028 Lowest Common Multiple Plus】方面的内容,对于【 2028 Lowest Common Multiple Plus】感兴趣的同学可以参考一下。

Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26562    Accepted Submission(s): 10747 Problem Description 求n个数的最小公倍数。   Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。   Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。   Sample Input 2 4 6 3 2 5 7   Sample Output 12 70   这道题计算n个数字的最小公倍数,我们可以从中选出最大的一个数,逐次加一,知道这个数处以所有n个数的余数都为零。 另外,也可以先用辗转相除法计算前两个数字的最小公倍数,再逐次加一~~ #include<iostream> using namespace std; int main(){ int n; int a[100]; while(cin>>n){ int max=0; for(int i=0;i<n;i++){ cin>>a[i]; if(a[i]>max) max=a[i]; } for(int j=max;;j++){ int cont=0; for(i=0;i<n;i++){ if(j%a[i]!=0) break; cont++; } if(cont==n) break; } cout<<j<<endl; } } 辗转除这种算法 还有个细节 就是第一个数让他和1求最小公倍数 第2个数和前面那个最小公倍数求最小公倍数 以此类推 #include<iostream> using namespace std; int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b); } int main(){ int n; while(cin>>n){ int a,b=1; for(int i=0;i<n;i++){ cin>>a; b=b/gcd(a,b)*a; } cout<<b<<endl; } } b/gcd(a,b)*a  和 (b*a)/gcd(a,b) 这两种情况 第一种可以AC 第二个不可以。可能是溢出的原因。(??)   最小公倍数和最大公约数链接: http://blog.csdn.net/lavendermaple/article/details/8705092

上一篇:关于裁员思考-素老胡huxingyu
下一篇:[20130905]A Short History of Nearly Everything[serial]

相关文章

相关评论