hdu1019最小公倍数

来源:互联网 发布:ubuntu和kali 编辑:程序博客网 时间:2024/04/30 04:32

求多个数的最小公倍数

被坑了,最大数是不超过32位的,求lcm的时候两数相乘就可能超了,导致WA了一万次。。

AC代码如下


#include "cstdio"

#include "iostream"
using namespace std;

typedef long long ll;


ll gcd(ll a,ll b)
{ if(a>b) return b==0 ? a : gcd(b,a%b); 
               return a==0 ? b : gcd(a,b%a);

}

ll lcm(ll a,ll b)
{ return (a*b)/gcd(a,b); }
int main()
{
  int t ;
  cin >> t;
  while (t --) {
    ll l = 1,n, i , s;
    cin >> n;
    for (i = 1; i<= n ; ++ i) {
      cin >> s;
      l = lcm(s,l);
    }
    cout << l <<endl;
  }
  return 0;
}
0 0
原创粉丝点击