CF传送门
早上起来看一下昨天的cf div2,后悔昨天没打了
本题是一道很水的思维题
题目的大意就是说,如果选择序列
a
a
a的第
i
i
i位,如果
a
i
a_i
ai不整除
(
i
+
1
)
(i+1)
(i+1),就把这一位删掉,问是否可以把序列
a
a
a完全删除
我们考虑
a
i
a_i
ai,显然
a
i
a_i
ai可能因为前面一些数的删除,下标前移;那对于
a
1
,
a
2
.
.
.
a
n
−
1
,
a
n
a_1,a_2...a_{n-1},a_n
a1,a2...an−1,an每个数只需要都存在一种情况使
a
i
%
j
!
=
0
(
2
≤
j
≤
(
i
+
1
)
)
a_i\%j!=0(2\le j\le (i+1))
ai%j!=0(2≤j≤(i+1))即可最终把整个序列删除
Code:
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int t,n,a[N];
int main(){
cin>>t;
while(t--){
cin>>n;
int flag=0;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
int flag1=0;
for(int j=2;j<=i+1;j++){
if(a[i]%j!=0) {
flag1=1;
break;
}
}
if(!flag1){
cout<<"NO"<<endl;
flag=1;
break;
}
}
if(!flag) cout<<"YES"<<endl;
}
return 0;
}