CF1603A Di-visible Confusion
题目
给一个长度为 \(n\) 的序列 \(a_1,a_2,\dots,a_n\),对于每个位置 \(i\),如果 \(a_i\%\left(i+1\right)\not=0\),就可以将 \(a_i\) 删掉。删掉之后,后面的数都会往前面移动一位。问能否将序列删成空。
数据范围
\(1\le t\le10^4,1\le n\le10^5,1\le \sum n\le3\times10^5,1\le a_i\le10^9\)。
样例输入 #1
5
3
1 2 3
1
2
2
7 7
10
384836991 191890310 576823355 782177068 404011431 818008580 954291757 160449218 155374934 840594328
8
6 69 696 69696 696969 6969696 69696969 696969696
样例输出 #1
YES
NO
YES
YES
NO
思路
不难发现,当\(a_i\)不能被删除时,\(a_i\nmid 2,3,4...i,i+1\),所以我们只需要判断是否当前的\(a_i\)满足条件
数据似乎有点水,\(O(n^2)\)都能过
代码
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
const int Maxn=1e5+10;
int a[Maxn];
int n,flag,cnt;
void run()
{
cin>>n;flag=1;cnt=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
bool find=0;
for(int j=1;j<=i;j++)
{
if(a[i]%(j+1)!=0)
{
find=1;
break;
}
}
if(!find) flag=0;
}
cout<<(flag?"Yes":"No")<<endl;
}
signed main()
{
int t;
cin>>t;
while(t--) run();
return 0;
}
标签:le10,le,Di,int,Confusion,visible,CF1603A,YES
From: https://www.cnblogs.com/lyk2010/p/17868379.html