HDoj 2028 Lowest Common Multiple Plus(最小公倍数、最大公約数)
2273 ワード
Lowest Common Multiple Plus
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 49546 Accepted Submission(s): 20479
Problem Description
n個数の最小公倍数を求める.
Input
入力には複数のテストインスタンスが含まれ、各テストインスタンスの開始は正の整数nであり、次いでnの正の整数である.
Output
各テスト・データのセットに対して最小公倍数を出力し、各テスト・インスタンスの出力は1行を占めます.最後の出力は32ビットの整数だと仮定できます.
Sample Input
Sample Output
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 49546 Accepted Submission(s): 20479
Problem Description
n個数の最小公倍数を求める.
Input
入力には複数のテストインスタンスが含まれ、各テストインスタンスの開始は正の整数nであり、次いでnの正の整数である.
Output
各テスト・データのセットに対して最小公倍数を出力し、各テスト・インスタンスの出力は1行を占めます.最後の出力は32ビットの整数だと仮定できます.
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
:
#include <iostream>
#include <cstdio>
using namespace std;
int f(int a,int b)
{
int m;
int t;
int ta=a,tb=b;
if(a<b)
{
t=a;a=b;b=t;
}
while(b)
{
m=a%b;
a=b;
b=m;
}
return ta/a*tb;//
}
int main()
{
long long sum;
int n,a[110];
while(~scanf("%d",&n))
{
sum=1;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum=f(sum,a[i]);
}
printf("%lld
",sum);
}
return 0;
}
#include <cstdio>
int f(int a,int b)
{
int t;
int m;
if(a<b)
{
t=a;a=b;b=t;
}
while(b)
{
m=a%b;
a=b;
b=m;
}
return a;//
}
int main()
{
int m;
int n,a[110];
while(~scanf("%d",&n))
{
scanf("%d",&a[0]);
for(int i=1;i<n;i++)
{
scanf("%d",&a[i]);
m=f(a[i-1],a[i]);
a[i]=a[i-1]/m*a[i];
}
printf("%d
",a[n-1]);
}
return 0;
}