标签:
题目意思就是给你 一组32位的整数,让你求所给的这组数的所有数的最小公倍数。解题大致过程就是先对给出的这组数{a1,a2,a3...am}从小到大进行排序得到{b1,b2...bm},然后先求出b1和b2的最小公倍数,再以此最小公倍数和第三个数b3求出它们之间的最小公倍数,一直这样下去到bm,就能得到最终所有数的最小公倍数。
附代码
1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <stdlib.h> 5 6 int a[1000001]; 7 int cmp(const void *a, const void *b) 8 { 9 return *(int *) a - *(int *)b; 10 } 11 int main() 12 { 13 int n; 14 freopen("in", "r", stdin); 15 16 while(scanf("%d", &n) != EOF) 17 { 18 int m; 19 20 while(n --) 21 { 22 int i, j; 23 24 scanf("%d", &m); 25 for(i = 0; i < m; ++ i) 26 scanf("%d", &a[i]); 27 28 qsort(a, m, sizeof(int), cmp); 29 30 for(i = 0; i < m - 1; ++ i) 31 { 32 if(a[i] > a[i + 1]) 33 { 34 int t = a[i]; 35 a[i] = a[i + 1]; 36 a[i + 1] = t; 37 } 38 39 for(j = a[i + 1];; j += a[i + 1]) 40 { 41 if(j % a[i + 1] == 0 && j % a[i] == 0) 42 { 43 a[i + 1] = j; 44 break; 45 } 46 } 47 } 48 49 printf("%d\n", a[m - 1]); 50 } 51 } 52 return 0; 53 }
hdu 1019 Least Common Multiple
标签:
原文地址:http://www.cnblogs.com/shihuai/p/4463466.html