杭电ACM2028 求教

寒假无聊在家做做水题,做到这道碰到点问题:

用最大数一个个除以其他数,有除不尽的就将最大数累加自己再一个个除,直到全部能除尽就是最小公倍数的做法 AC了,下面是代码:

#include using namespace std; int main(){ int n,a[100]; while(cin>>n) { int max=0; for(int i=0;i>a[i]; if(a[i]>max) max=a[i]; } bool con =true; while(con) { con=false; for(int j=0;j

但一开始我是用“两个数的公倍数=两数乘积/两数最大公约数“的思想做的,一直WA,不明白原因,下面是代码,希望有人能给我点启发:

#include using namespace std; int gcd(int m,int n) { return n?gcd(n,m%n):m; } int main() { int n=0; int data[100]; while (cin >> n) { for (int i=0;i>data[i]; } for (i=1;i=data[i]) { data[i]=data[i-1]*data[i]/gcd(data[i-1],data[i]); } else { data[i]=data[i-1]*data[i]/gcd(data[i],data[i-1]); } } cout << data[n-1]<

你可能感兴趣的:(ACM)