33分求调
查看原帖
33分求调
1115904
malinhao45楼主2024/3/31 15:41
#include<iostream>
#include<algorithm>
using namespace std;
bool p[1000];
int a[1000];
int c[100];
int d[10000];
int n,r;
int k=0;
int ans=0;
void dfs(int m){
	if(r==m-1){
		int cnt=0;
		for(int i=1;i<=r;i++){
			if(a[i]!=0){
				cnt+=a[i];
			}else{
				cnt=0;
				break;
			}
		//	cout<<a[i]<<" ";
		}
		d[k++]=cnt;
	}
	for(int i=1;i<=n;i++){
		if(!p[c[i]]){
			a[m]=c[i];
	     	p[c[i]]=1;
			dfs(m+1);
            p[c[i]]=0;
	}
}
}
int main(){
cin>>n;
cin>>r;
for(int i=1;i<=n;i++){
	cin>>c[i];
}
dfs(1);
sort(d+0,d+k);
for(int i=0;i<k;i++){
	if(d[i]!=d[i+1]){
		bool f=0;
		for(long long j=2;j*j<=d[i];j++){
			if(d[i]%j==0){
				f=1;
			}
		}
		if(f==0){
			ans++;
		}
	}
}
cout<<ans;
return 0;
} 

2024/3/31 15:41
加载中...