#include <bits/stdc++.h>
using namespace std;
#define int long long
bool deep(int sum, vector<int>&v, int l, int r){
if(sum%2==1)return 0;
vector<int>a;
for(int i=l; i<=r; i++)a.push_back(v[i]);
int n=a.size();
vector<bool>dp(sum/2+2);
dp[0]=true;
for(int i=0; i<n; i++){
for(int j=sum/2; j>=0; j--){
if(j-a[i]>=0 && dp[j-a[i]])dp[j]=true;
}
}return dp[sum/2];
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
cin>>t;
for(int _=0; _<t; _++){
int n;
cin>>n;
vector<int>a(n+2), sum(n+2);
for(int j=1; j<=n; j++){
cin>>a[j];
sum[j]=sum[j-1]+a[j];
}vector<bool>check(n+1);
for(int i=2; i<=n; i++){
if(!check[i]){
bool c=true;
for(int j=i; j<=n; j++){
if( !deep(sum[j]-sum[j-i], a, j-i+1, j)){
c=false;
break;
}
}if(c){
for(int j=i; j<=n; j+=i){
check[j]=true;
}
}
}
}
vector<int>q;
for(int i=2; i<=n; i++){
if(check[i])q.push_back(i);
}cout<<q.size()<<" ";
for(auto e: q)cout<<e<<" ";
cout<<endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |