Lowest Common Multiple Plus
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
提交次数:4次
坑点:计算最小公倍数时,要其中一个数先除以最大公因数,然后再乘以另一个数,否则超限,导致错误
#include<iostream>
using namespace std;
int yueshu(int a,int b){
int t;
while(b!=0){
t=a%b;
a=b;
b=t;
}
return a;
}
int main(){
int n;
int t;
int big;
while(cin>>n){
int s[n];
for(int i=0;i<n;i++){
cin>>s[i];
}
if(n>=2){
t=yueshu(s[0],s[1]);
big=s[0]/t*s[1];
}
for(int i=1;i<n-1;i++){
t=yueshu(big,s[i+1]);
big=big/t*s[i+1];//坑点:a*b/gcd(a,b)会超限,所以先÷再*
}
if(n==1)
cout<<s[0]<<endl;
else if(n>=2){
cout<<big<<endl;
}
}
return 0;
}