如题,本人蒟蒻,老老实实的按照k个for循环的方法写这道题 结果刚枚举到k=7就AC了? 代码(c++)如下,希望有大佬能帮忙解释下为什么
#include<bits/stdc++.h>
using namespace std;
bool z(long long x){
if(x==2)return 1;
for(int i=2;i*i<=x;i++)if(x%i==0)return 0;
return 1;
}
int main(){
int n,k,a[25],ans=0;
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
if(k==1){
for(int i=1;i<=n;i++){
if(z(a[i]))ans++;
}
cout<<ans;
}else if(k==2){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)if(z(a[i]+a[j]))ans++;
cout<<ans;
}else if(k==3){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int b=j+1;b<=n;b++)if(z(a[i]+a[j]+a[b]))ans++;
cout<<ans;
}else if(k==4){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int b=j+1;b<=n;b++)
for(int c=b+1;c<=n;c++)if(z(a[i]+a[j]+a[b]+a[c]))ans++;
cout<<ans;
}else if(k==5){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int b=j+1;b<=n;b++)
for(int c=b+1;c<=n;c++)
for(int d=c+1;d<=n;d++)if(z(a[i]+a[j]+a[b]+a[c])+a[d])ans++;
cout<<ans;
}else if(k==6){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int b=j+1;b<=n;b++)
for(int c=b+1;c<=n;c++)
for(int d=c+1;d<=n;d++)
for(int e=d+1;e<=n;e++)if(z(a[i]+a[j]+a[b]+a[c]+a[d]+a[e]))ans++;
cout<<ans;
}else if(k==7){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int b=j+1;b<=n;b++)
for(int c=b+1;c<=n;c++)
for(int d=c+1;d<=n;d++)
for(int e=d+1;e<=n;e++)
for(int f=e+1;f<=n;f++)if(z(a[i]+a[j]+a[b]+a[c]+a[d]+a[e]+a[f]))ans++;
cout<<ans;
}
return 0;
}