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 }