logo AlgoBeat OnlineJudge
登录 注册

【模板】Hack 题解

作者: Elaina  ·  发布于 2026-07-17 16:20:17  ·  最后修改于 2026-07-17 17:12:48
已通过
审核员:joe_zxq 彩笔 · 2026-07-17 17:12:48

由于要求 lcm,并且代码用了 unsigned long long,所以我们就要尽可能让这几个数互质并且这几个数的乘起来大于 。首先的想法是构造质数。我们构造 ,这样值达到了 ,远远不够。然后我们发现为了让他们互质,没必要全构造质数。于是我们贪心从大到小选,如果一个数和之前选的数互质,就加入这个数。

#include<bits/stdc++.h>
using namespace std;
vector<int>g;
int main(){
    for(int i=100;i>=1;i--){
        bool flag=1;
        for(auto j:g)if(__gcd(i,j)>1)flag=0;
        if(flag){
            g.push_back(i);
            cout<<i<<',';
            if(g.size()>=10)return 0;
        }
    }
}

这样构造的数是 ,乘起来是 ,就差一点了。

然后我们发现 同时用了 的因子,非常不牛。然后我们可以把 拆成 ,得到这样的构造:,乘起来是 ,于是我们就可以通过这题了。

暂无评论

登录 后即可评论。