早上起来看一下昨天的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;
}