分析
不难发现,由于 \(x>0\),所以当出现两个相同数的时候一定是 NO
。再然后,发现对于一个数 \(k\),记 \(re_i\) 表示 \(a\) 中模 \(k\) 余 \(i\) 的数的个数,若对于所有的 \(0\le i<k\),都有 \(re_i>1\),那么不管你加多少,必定有至少 \(2\) 个 \(k\) 的倍数,不互质,因此也是 NO
。剩下的就是 YES
了。
AC Code
#include <bits/stdc++.h>
using namespace std;
#define int long long
map<int,int> mp,cnt;
int a[110];
signed main()
{
int t;
cin>>t;
while(t--)
{
mp.clear();
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
mp[a[i]]++;
}
for(int i=1;i<=n;i++)
{
if(mp[a[i]]>1)
{
cout<<"NO"<<endl;
goto E;
}
}
for(int i=2;i<=n;i++)
{
cnt.clear();
for(int j=1;j<=n;j++)
{
cnt[a[j]%i]++;
}
for(int j=0;j<i;j++)
{
if(cnt[j]<=1)
{
goto F;
}
}
cout<<"NO"<<endl;
goto E;
F:;
}
cout<<"YES"<<endl;
E:;
}
return 0;
}
标签:NO,int,long,i1,mp,CF1770C
From: https://www.cnblogs.com/Crazyouth/p/17980000