1 条题解
-
0
这个题我们可以使用DFS来实现。首先按照题目的要求进行输入,然后再进行dfs,每迭代一次都判断这一组符不符合,如果符合要求,那么就将答案增加一
code
#include <iostream> #include <cstdio> using namespace std; bool isprime(int a) { if(a == 1) return false; for(int i = 2; i * i <= a; i++) if(a % i == 0) return false; return true; } int n,k; int a[25]; long long ans; void dfs(int m, int sum, int startx) { if(m == k) { if(isprime(sum)) ans++; return ; } for(int i = startx; i < n; i++) dfs(m + 1, sum + a[i], i + 1); return ; } int main() { freopen("num.in","r",stdin); freopen("num.out","w",stdout); scanf("%d%d",&n,&k); for(int i = 0; i < n; i++) scanf("%d",&a[i]); dfs(0, 0, 0); printf("%d\n",ans); return 0; }
信息
- ID
- 994
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 84
- 已通过
- 10
- 上传者