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         else
25         {
26             if(n%3==0)
27                printf("%lld\n",((long long)n-1)*(n-2)*(n-3));
28             else
29                printf("%lld\n",(long long)n*(n-1)*(n-3));
30         }
31     }
32     return 0;
33 }

 

转载于:https://www.cnblogs.com/zyb993963526/p/6710411.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值