深入淺出學演算法004-求多個數的最小公倍數
阿新 • • 發佈:2018-11-28
4003: 深入淺出學演算法004-求多個數的最小公倍數
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 3630 Solved: 983
Description
求n個整數的最小公倍數
Input
多組測試資料,先輸入整數T表示組數 然後每行先輸入1個整數n,後面輸入n個整數k1 k2…kn
Output
求k1 k2 …kn的最小公倍數
Sample Input
1
3 12 18 6
Sample Output
36
這道題剛開始沒有使用陣列,結果tle了;後來去大佬部落格看了下,改成陣列就過了
#include<stdio.h> int gcd(int x,int y) { int t=1; while(t!=0) { t=x%y; x=y; y=t; } return x; } int lcm(int s[],int n) { int num,i; for(i=0;i<n-1;i++) { num=gcd(s[i],s[i+1]); s[i+1]=s[i]/num*s[i+1]/num*num; } return s[n-1]; } int main() { int t,n,m,i; while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d",&n); int s[n]; for(i=0;i<n;i++) { scanf("%d",&s[i]); } m=lcm(s,n); printf("%d\n",m); } } }