玄关!
  • 板块灌水区
  • 楼主zyc231354zrz
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/5/28 17:30
  • 上次更新2024/5/28 20:14:46
查看原帖
玄关!
1252618
zyc231354zrz楼主2024/5/28 17:30

题目为P1036

#include<bits/stdc++.h>
using namespace std;

long long a[25],b[25],id[25],n,m,sum=0,ans=0;
bool book[25];

bool s(int g){
	if(g==1)return 0;
	if(g==2)return 1;
	if(g%2==0){
		return 0;
	}
	for(int i=3;i<g;i+=2){
		if(g%i==0){
			return 0;
		}
	}
	return 1;
}

void dfs(int k){
	if(k>m){
		for(int i=1;i<=m;i++){
			ans+=a[i];
			//cout<<a[i]<<" ";
		}//cout<<"\n";
		if(s(ans)==1){
			sum++;
		}
		ans=0;
		return;
	}
	for(int i=id[k-1]+1;i<=n;i++){
		if(!book[i]){
			a[k]=b[i];
			id[k]=i;
			book[b[i]]=true;
			dfs(k+1);
			book[b[i]]=false;
		}
	}
	
}


int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	dfs(1);
	cout<<sum;
	return 0;
}

求路过的dalao帮助

2024/5/28 17:30
加载中...