CSU 1124: 最終時刻(求所有數的最小公倍數)
阿新 • • 發佈:2019-02-18
題目:
Description
外太空又發生戰爭了.機器人王國決定用N架炮臺消滅敵人的供需庫,但是無奈每架炮臺的威力有限,現在國王得到一個訊息:如果在某一時刻N架炮臺同時打到敵人的供需庫,那麼這個供需庫就會爆炸.當然炮臺的威力不累計.也就是說如果某一時刻有N-1架炮臺的大炮同時打到敵人的供需庫,下一時刻只有第N架炮臺的大炮打到敵人供需庫的話,供需庫是不會爆炸的.現在國王想知最早能在什麼時候炸掉敵人的供庫.每臺大炮的發射間隔是一定的.所有炮從0時刻同時開始發射.
Input
每組資料兩行,第一行輸入N,表示炮臺的數目,接下來的一行有N個數a_1,a_2...a_n,表示每個炮臺的發射間隔,N<=1000.a_i<=2^32
Output
每組資料輸出一行,表示敵人的供需庫最早被炸燬的時間.資料保證最後結果<=2^63-1
Sample Input
2 2 3 3 1 2 3
Sample Output
6 6
程式碼:
#include<iostream>
#include<stdio.h>
using namespace std;
long long gcd(long long a, long long b)
{
if (b==0)return a;
return gcd(b, a%b);
}
int main()
{
long long n, b, ans;
while (scanf ("%lld", &n) != EOF)
{
ans = 1;
while (n--)
{
scanf("%lld", &b);
ans *= b / gcd(ans, b);
}
printf("%lld\n", ans);
}
return 0;
}