Input 首先是一個正整數T,表示有T組測試數據
Output 對於每組測試數據,輸出最大的最小公倍數,每個輸出單獨占一行
Sample Input
Sample Output
2 9 7
Source 安徽省2015年“京勝杯”大學生程序設計競賽
504 210
1 #include<iostream>
2 using namespace std;
3
4 long long gcd(long long a,long long b)
5 {
6 if(b==0)
7 return a;
8 return gcd(b,a%b);
9 }
10
11 long long lcm(long long a,long long b)
12 {
13 return a/gcd(a,b)*b;
14 }
15
16
17 int main()
18 {
19 int t;
20 cin>>t;
21 while(t--)
22 {
23 long long n;
24 long long x,i,j,k,max=0;
25 cin>>n;
26 for(i=n;i>0;i--)
27 {
28 if(i*i*i<max)
29 break;
30 for(j=n;j>0;j--)
31 {
32 if(i*j*j<max)
33 break;
34 for(k=n;k>0;k--)
35 {
36 if(i*j*k<max)
37 break;
38 x=lcm(i,lcm(j,k));
39 if(x>max)
40 max=x;
41 }
42 }
43 }
44 cout<<max<<endl;
45 }
46 return 0;
47 }
簡單題解(方法二):
1 #include<iostream>
2 using namespace std;
3
4 long long gcd(long long a,long long b)
5 {
6 if(b==0)
7 return a;
8 return gcd(b,a%b);
9 }
10
11 bool isrp(long long m,long long n)
12 {
13 if(gcd(m,n)>1)
14 return 0;
15 else return 1;
16 }
17
18 long long lcm(long long a)
19 {
20 if(a%2==0)
21 {
22 if(!isrp(a,a-3))
23 return lcm(a-1);
24 else
25 return a*(a-1)*(a-3);
26 }
27 else
28 return a*(a-1)*(a-2);
29 }
30
31 int main()
32 {
33 int t;
34 cin>>t;
35 while(t--)
36 {
37 long long n;
38 cin>>n;
39 if(n==1)
40 cout<<1<<endl;
41 else if(n==2)
42 cout<<2<<endl;
43 else
44 cout<<lcm(n)<<endl;
45 }
46 return 0;
47 }