@[Jadejunxi](/user/1001542)
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[30];
bool check(int x){
for(int i=2;i*i<=x;i++)
if(x%i==0) return 0;
return 1;
}
int main(){
int n,k,ans=0;
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i];
int u=1<<n;
for(int s=0;s<u;s++)
if(__builtin_popcount(s)==k){
int sum=0;
for(int i=0;i<n;i++)
if(s&(1<<i)) sum+=a[i];
if(check(sum)) ans++;
}
cout<<ans;
return 0;
}
```
我是用位运算做的
by Apress @ 2024-02-14 16:05:57
@[Apress](/user/384419) 我的代码怎么改
by Jadejunxi @ 2024-02-14 16:22:12
@[Jadejunxi](/user/1001542)
1.
```cpp
int dfs(int p = 1,int sum=0)
```
这里你都是强行是1,0了,那你后面的
```cpp
int a = dfs(p+1,sum);
int b = dfs(p+1,sum+nums[p]);
```
有什么用捏?
2.DFS看不懂你在写什么。(我太菜了?
by Apress @ 2024-02-14 16:28:35
thank you
by Jadejunxi @ 2024-02-14 16:35:51
@[Apress](/user/384419) ~~其实我也没看懂~~
by yehaoming @ 2024-02-16 20:26:20
@[Apress](/user/384419) 其实1是默认函数参数的写法
by PhiliaTheCat @ 2024-03-04 12:27:29