CF Good Bye 2022: 2023 is NEAR (CF1770C)

C.Koxia and Number Theory

题意:给定 n 个数,问是否存在一个正整数 x ,使得对  i,j[1,n] ,有 gcd(ai+x,aj+x)=1

题解1:
x 使得 ai+x 互素.

给定数 p ,若 p 可以整除 ai+x 中的两个,那么一定不满足题意.

ai%p=k,这时候 x 如果取 pk,那么就整除.所以如果有 ai%paj%p 相同 ,那 x 一定不能取 pk.不然他们的最大公因数至少是 k. a%p 的取值为 [0,p1] ,如果取值都至少有两个,那么 x 无论取何值, 一定存在两个 ai+x ,对 p 取模后为 0 ,即一定存在使得最大公因数至少为 p

题解2:

感觉这题挺难的,想了很多次也没想出来.

若两个数互质,一定不存在质数 p 使得 p 能整除这两个数.

如果存在一个质数使得 p 能整除至少两个数,也就说明这两个数一定不互质.

bi=ai+x
那么,能否判断对于 p ,是否总是整除至少两个 bi ?(无论 x 的取值)

对于 ai%p=k ,显然当取 x=pk 就整除了.

那么如果 ai%p 的模数 [0,p1] 都至少出现了两次,那么无论 x 怎么取值,一定都会使得某个 ai+x 变成 0 (出现至少两次,那么至少有两个这样的 i ),这样他们的最大公约数一定至少是 p ,这样直接输出 NO

点击查看代码
#include<bits/stdc++.h>

using namespace std;
#define int long long

const int N = 1e6+10;
int primes[N];
int vis[N];
int idx = 0;
void getprime()
{
    for(int i=2;i<N;i++)
    {
        if(!vis[i])
            primes[idx++] = i;
        for(int j=i+i;j<N;j+=i)
        {
            vis[j] = 1;
        }
    }
}
typedef pair<int,int> PII;;

void solve()
{
    int n;
    cin>>n;
    vector<int> a(n);
    map<int,bool> vis;
    int flag = 1;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        if(vis[a[i]])
        {
            flag =0;
        }
        vis[a[i]]=1;
    }
    if(!flag)
    {
        cout<<"NO\n";
        return ;
    }
    for(int u =0;u<idx&&primes[u]<=(n+1)/2;u++)
    {
        int p = primes[u];

        // priority_queue< PII,vector<PII>,greater<PII> >q;

        map<int,int> mp;
        for(int i = 0;i<n;i++)
        {  
            int num = a[i]%p;
            mp[num]++;
            // q.push({mp[num],num});
        }
        int flag = 0;
        for(auto[x,y]:mp)
        {
            if(y<2)
            {
                flag =1;
            }
        }
        if(!flag)
        {
            cout<<"NO\n";
            return ;
        }
    }
    cout<<"YES\n";

}

signed main()
{
    getprime();
    // for(int i=0;i<10;i++)
    // {
    //     cout<<primes[i]<<'\n';
    // }
    int T;
    cin>>T;
    while(T--)
        solve();

    return 0;
} 


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   Rainy_L  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示