首页 > 代码库 > 51Nod 1419 最小公倍数挑战

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",n);20             continue;21         }22         if(n%2)23             printf("%lld\n",(long long)n*(n-1)*(n-2));24         else25         {26             if(n%3==0)27                printf("%lld\n",((long long)n-1)*(n-2)*(n-3));28             else29                printf("%lld\n",(long long)n*(n-1)*(n-3));30         }31     }32     return 0;33 }

 

51Nod 1419 最小公倍数挑战