2 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n,k,cnt = 0; vector<int>numbers; bool isPrime(int num) { if(num<=1) return false; for(int i = 2;i*i<=num;i++) { if(num%i == 0) return false; } return true; } void generateCombinations(int start,int sum,int count) { if(count == k) { if(isPrime(sum)) cnt++; return ; } for(int i = start;i<n;i++) { generateCombinations(i+1,sum+numbers[i],count+1); } } int main() { cin>>n>>k; numbers.resize(n); for(int i = 0;i<n;i++) { cin>>numbers[i]; } generateCombinations(0,0,0); cout << cnt << endl; return 0; }
-
-3
#include<bits/stdc++.h> using namespace std; int n, k;
int read(){ int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9'){ if (ch == '-')f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9'){ x = x * 10 + ch - '0'; ch = getchar(); } return x * f; }
int a[12001];
bool pd(int k){ for (int i = 2;i * i <= k;i ++) if (k % i == 0) return 0; return 1; }
int s;
void dfs(int x, int y, int z){ if (x == k && pd(y)){ ++ s; return ; } for (int i = z;i < n;i ++) dfs(x + 1, y + a[i], i + 1); return ; }
int main() { n = read(), k = read(); for (int i = 0;i < n;i ++)a[i] = read(); dfs (0, 0, 0); printf("%d\n", s); return 0; }
- 1
信息
- ID
- 5094
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 248
- 已通过
- 114
- 上传者