小于n的三个数的最大lcm

传送门

几天以前,我学习了最小公倍数。玩得挺久了,想换换口味。

我不想用太多的数字,我想从1到n中选三个数字(可以相同)。使得他们的最小公倍数最大。

单组测试数据。
第一行有一个整数n (1≤n≤1,000,000)。

输出

输出一个整数表示选三个数字的最大的最小公倍数。

输入样例

9
7

输出样例

504
210



 

这个题并不一定要选择n,n-1和n-2,也并不一定要选择n和n-1,具体证明看看这给博客

#include<bits/stdc++.h>
#define  ll __int64
using  namespace  std;
 
int main(){
  ll n,ans;
  cin>>n;
  if(n<3)ans=n;
  else  if(n%2!=0){
    ans=n*(n-1)*(n-2);
  }
  else{
    if(n%3!=0)ans=n*(n-1)*(n-3);
    else ans=(n-1)*(n-2)*(n-3);
  }
  cout<<ans<<endl;
  return 0;
}

 

posted @ 2021-05-02 16:02  哎呦哎(iui)  阅读(129)  评论(0编辑  收藏  举报