[CF235A] LCM Challenge - 贪心

找到3个不超过n的正整数(可以相同),使得它们的lcm(最小公倍数)最大。

Solution

可以做得很优雅吧,但我喜欢(只会)暴力一点

根据质数密度分布性质,最后所取的这三个数一定不会比 \(n\) 小太多(实在不行就取三个质数呀),所以我们钦定一个界,然后暴力枚举取最优即可

#include 
using namespace std;
#define int long long
int n;

signed main() {
    cin>>n;
    int ans=0;
    for(int i=max(1ll,n-80);i<=n;i++) {
        for(int j=max(1ll,n-80);j<=n;j++) {
            for(int k=max(1ll,n-80);k<=n;k++) {
                int g=i*j/__gcd(i,j);
                int u=g*k/__gcd(g,k);
                ans=max(ans,u);
            }
        }
    }
    cout<

你可能感兴趣的:([CF235A] LCM Challenge - 贪心)