题目大意:给定n个数 求最小公倍数 LCM- -!
思路:这篇文章写下来,是不想这两个公式某天给忘了 另外 再贴一份2年前写的代码对比下 - -! gcd(int a int b){ return b?gcd(b,a%b):a;} lcm(int x, int y){return x/gcd(x,y)*y;}
代码:
#include <iostream>
using namespace std;
int gcd(int a, int b) //最大公约数
{
return b?gcd(b,a%b):a;
}
int lcm(int x, int y) //最小公倍数 num1*num2/gcd(num1,num2)
{
return x/gcd(x,y)*y;
}
int main()
{
int cas,n,a;
cin>>cas;
while(cas--)
{
cin>>n;
int tmp=1; //因为要两两计算 所以tmp为1 这个想都没想就写了
while(n--)
{
cin>>a;
tmp = lcm(tmp,a);
}
cout<<tmp<<endl;
}
return 0;
}
下面是我两年前的代码:看到之后 惊为天人 人 ..
#include<iostream>
using namespace std;
unsigned int gcd(unsigned int a, unsigned int b)
{
if(a<b)
{
unsigned int tmp=a;
a=b;
b=tmp;
}
while(b!=0)
{
unsigned int t=a%b;
a=b;
b=t;
}
return a;
}
unsigned int lcm(unsigned int a, unsigned int b)
{
return a/gcd(a,b)*b;
}
int main()
{
int n;
cin>>n;
while(--n>=0)
{
unsigned int l=1;
int k;
cin>>k;
while(--k>=0)
{
unsigned int x;
cin>>x;
l=lcm(l,x);
}
cout<<l<<endl;
}
return 0;//code by JJ
}
天 当时我怎么会用unsigned这种高深的东西 ,还有明明1行的gcd 我怎么写了那么多行 - -! 岁月是把杀猪刀..