CF1604C Di-visible Confusion
题目的大意就是说,如果选择序列\(a\)的第\(i\)位,如果\(a_i\)不整除\((i+1)\),就把这一位删掉,问是否可以把序列\(a\)完全删除
我们考虑\(a_i\),显然\(a_i\)可能因为前面一些数的删除,下标前移;那对于\(a_1,a_2...a_{n-1},a_n\)每个数只需要都存在一种情况使\(a_i\%j!=0(2\le j\le (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;
}