1019—Least Common Multiple

来源:互联网 发布:文件上传linux服务器 编辑:程序博客网 时间:2024/05/22 03:16

题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1019

收获:最小公倍数

两个数的乘积=最小公倍数*最大公约数。

原理:d为a,b的最大公约数,a/d=c,b/d=e;(c、e互质)

a*b/d=a*e=c*b;(a*b/d是a,b的最小公倍数数)

最小公倍数*最大公约数=a*b/d*d=a*b=两个数的乘积;

 

我的代码:

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>long long lcm(long long a,long long b){long long t,i,j;i=a;j=b;while(b!=0){t=a%b;a=b;b=t;}return i*j/a; }int main(){long long m;scanf("%lld",&m);long long i;for(i=0;i<m;i++){long long k;scanf("%lld",&k);long long j,a[1000];for(j=0;j<k;j++)scanf("%lld",&a[j]);long long uu=1;for(j=0;j<k;j++)uu=lcm(uu,a[j]);printf("%lld\n",uu);}return 0;}