CF1604C Di-visible Confusion

CF传送门

题目的大意就是说,如果选择序列\(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;
}
posted @ 2021-12-14 16:40  Wraith-Fiee  阅读(48)  评论(0)    收藏  举报