@[chensj](/space/show?uid=104198)
就是一个裸的DFS。
具体怎么做有点忘了。
先发上我那丑陋的代码:
```cpp
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
//#define BR
using namespace std;
int p,q;
int m[22];
int xx[22];
bool n[22];
int total=0;
bool isprime(int d) {
long long i;
if(d<2)return false;
if(d==2)return true;
for(i=2; i<=sqrt(d); i++)
if(d%i==0)return false;
return true;
}
void print() {
int dd=0;
for(int i=0; i<q; i++) {
dd+=m[i];
}
if(isprime(dd)) {
#ifdef BR
cout<<dd<<endl;
#endif
total++;
}
}
void dfs(int a,int step) {
m[step]=xx[a];
if(step==q-1) {
print();
return ;
}
n[a]=true;
for(int i=a; i<p; i++) {
if(n[i]) {
continue;
}
dfs(i,step+1);
}
n[a]=false;
}
int main() {
cin>>p>>q;
for(int i=0; i<p; i++) {
cin>>xx[i];
}
for(int i=0; i<p-q+1; i++) {
dfs(i,0);
}
cout<<total<<endl;
return 0;
}
```
by G_M_H @ 2019-05-25 09:11:18
@[chensj](/space/show?uid=104198) 你的判断质数的函数似乎不对。
by G_M_H @ 2019-05-25 09:14:34
@[G_M_H](/space/show?uid=130029) 为什么不对呢?我的同学说可以
by chensj @ 2019-05-25 14:24:33
@[chensj](/space/show?uid=104198) 如果我没搞错 你的判质数程序会将121当成质数 QAQ。
by G_M_H @ 2019-05-25 20:25:05