?奇怪的AC
查看原帖
?奇怪的AC
458056
小小豆鬼呦楼主2021/8/29 22:19

如题,本人蒟蒻,老老实实的按照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;
} 
2021/8/29 22:19
加载中...