hdoj2028 Lowest Common Multiple Plus

1385 ワード

Problem Description
n個数の最小公倍数を求める.
 
Input
入力には複数のテストインスタンスが含まれ、各テストインスタンスの開始は正の整数nであり、次いでnの正の整数である.
 
Output
各テスト・データのセットに対して最小公倍数を出力し、各テスト・インスタンスの出力は1行を占めます.最後の出力は32ビットの整数だと仮定できます.
 
Sample Input

   
   
   
   
2 4 6 3 2 5 7

 
Sample Output

   
   
   
   
12 70

 
コード:
#include int main() {     __int64 n,a[1000];     while(scanf("%I64d",&n)!=EOF)     {     a[0]=1;     for(int i=1;i<=n;i++)     {         scanf("%I64d",&a[i]);         if(a[i]>a[i-1])         {             for(int j=1;;j++)             {                 if((a[i-1]*j)%a[i]==0)                 {                     a[i]=a[i-1]*j;                     break;                 }             }         }         else         {             for(int j=1;;j++)             {                 if((a[i]*j)%a[i-1]==0)                 {                     a[i]=a[i]*j;                     break;                 }             }         }     }     printf("%I64d",a[n]); }     return 0;     }
考え方:
小さい数でずっとforサイクルに乗って最初から、大きい数を割り切ることができることを知って答えを得ました