社区讨论
站外题求条,玄关
灌水区参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m64rpgbn
- 此快照首次捕获于
- 2025/01/20 16:11 去年
- 此快照最后确认于
- 2025/01/20 16:11 去年
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,k,sum,cnt;
int a[25],s[25];//a表示第i个数的编号,s表示第i个数的值
bool vis[25];
bool is_prime(int x){
for(int i=2;i<sqrt(x);i++){
if(x%i==0){
return false;
}
}
return true;
}
void dfs(int x) {
if(x>k){//选完了
if(is_prime(sum)) cnt++;
return;
}
for(int i=x+1;i<=n;i++){//编号为x+1到n
if(vis[i]) continue;//编号为i的数已使用
sum+=s[i];//求和
vis[i]=1;//使用过
a[x+1]=i;//记录
dfs(x+1);//递归
sum-=s[i];//清空
vis[i]=0;
a[x+1]=0;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>s[i];
}
sort(s+1,s+n);
dfs(1);
cout<<cnt;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...