收藏
关注
几天以前,我学习了最小公倍数。玩得挺久了,想换换口味。
我不想用太多的数字,我想从1到n中选三个数字(可以相同)。使得他们的最小公倍数最大。
Input
单组测试数据。
第一行有一个整数n (1≤n≤1,000,000)。
Output
输出一个整数表示选三个数字的最大的最小公倍数。
Input示例
9
7
Output示例
504
210 【分析】:相邻数互质,相邻奇数互质。
n为奇数的时候,由相邻数字一定互质和相邻奇数一定互质可知----->最优答案肯定是n*(n-1)*(n-2)。
n为偶数的时候,首先n和n-1是互质的,但n和n-2是不互质的,所以一个可以考虑的解是n*(n-1)*(n-3)。
那么n和n-3一定互质吗?不一定,当n%3==0的时候,最优解是(n-1)*(n-2)*(n-3)。
【代码】:
#include <bits/stdc++.h> using namespace std;
#define LL long long
int main()
{
LL n;
while(cin>>n)
{
LL ans;
if(n==)
{
cout<<<<endl;
continue;
} if(n==)
{
cout<<<<endl;
continue;
} if(n%==)
{ if(n%==)
{
ans=(n-)*(n-)*(n-);
cout<<ans<<endl;
} else
{
ans=n*(n-)*(n-);
cout<<ans<<endl;
}
}
else
{
ans=n*(n-)*(n-);
cout<<ans<<endl;
}
}
return ;
}