此题P1036 [NOIP2002 普及组] 选数
我WA了四个点,请各位大佬帮我看看错在哪了
#include<bits/stdc++.h>
using namespace std;
const int N = 5E6+10;
int n, k;
long long a[30];
int num, kind;
bool vis[30];
int is_prime(int m) {
if (m < 1) {
return 0;
}
for (int i = 2; i * i < m; i++) {
if (m % i == 0) {
return 0;
}
}
return 1;
}
void dfs(int step) {
if (step > k) {
int c=is_prime(num);
if (c) {
kind++;
}
return;
}
for (int i = step + 1; i <= n; i++) {
if (!vis[i]) {
num += a[i];
vis[i] = 1;
dfs(step + 1);
vis[i] = 0;
}
}
}
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
dfs(1);
cout << kind;
return 0;
}