51Nod 1419 最小公倍数挑战

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1419

题意:

思路:

要想最大,肯定去找尽量大的互质的数,如果不是互质的数,去掉约数后也就变成了互质数。

相邻的数肯定是互质的,如果n是奇数,那么n和n-1也是互质的,此时n*(n-1)*(n-2)就是最大值。

如果是偶数的话,就得去考虑n和n-3是否互质,如果互质,则最大值就是n*(n-1)*(n-3),否则就是(n-1)*(n-2)*(n-3)。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<vector>
 6 #include<queue>
 7 #include<cmath>
 8 using namespace std;
 9 
10 int n;
11 
12 int main()
13 {
14     //freopen("D:\input.txt","r",stdin);
15     while(~scanf("%d",&n))
16     {
17         if(n<=2)
18         {
19             printf("%d
",n);
20             continue;
21         }
22         if(n%2)
23             printf("%lld
",(long long)n*(n-1)*(n-2));
24         else
25         {
26             if(n%3==0)
27                printf("%lld
",((long long)n-1)*(n-2)*(n-3));
28             else
29                printf("%lld
",(long long)n*(n-1)*(n-3));
30         }
31     }
32     return 0;
33 }
原文地址:https://www.cnblogs.com/zyb993963526/p/6710411.html