第四个点RE了,谁能帮忙看看怎么回事,谢谢!
代码:
#include <bits/stdc++.h>
using namespace std;
int n,k,maxx,x[25],v[25]={0};
int vis[100010],pri[100010],cnt,anss,ans;
int init(int n){
pri[1]=2;
for(int i=2;i<=n;i++){
if(!vis[i]) pri[1+cnt++]=i;
for(int j=0;j<cnt;j++){
if(1ll*i*pri[j+1]>n) break;
vis[i*pri[j+1]]=1;
if(i%pri[j+1]==0) break;
}
}
return cnt--;
}
int dfs(int c,int f){
if(c==k+1){
//cout<<ans<<" ";
for(int i=1;pri[i]<=ans;i++)
if(ans==pri[i]) anss+=1;
}
for(int i=f;i<=n;i++){
if(v[i]==0){
ans+=x[i],v[i]=1;
dfs(c+1,i+1);
ans-=x[i],v[i]=0;
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>x[i],maxx+=x[i];
int m=init(maxx);
//for(int i=1;i<=m;i++) cout<<pri[i]<<" ";
dfs(1,1);
cout<<anss;
return 0;
}
orz