|
常用链接
留言簿(1)
随笔分类
随笔档案
文章档案
收藏夹
搜索
最新评论
阅读排行榜
评论排行榜
Powered by: 博客园
模板提供:沪江博客
|
|
|
|
|
发新文章 |
|
|
#include <stdio.h> #include <math.h>
long n,k,ans=0; long data[21]; /**/////////////int getans(long num) //判素数 { long i; long total; total=(long)(sqrt(num)); for (i=2;i<=total;i++) if (num%i==0) return 0; ans++; return 0; }
void dfs(long total,long num,long t) //深搜 { long i; if(total==k) getans(num); else { for(i=t;i<=n;i++) { num+=data[i]; dfs(total+1,num,i+1); num-=data[i];/**////////////////你也可以看它这个, total表示? //////////还踩×思父鍪?num表示取了这几个数的和,t表示从前t个数中取了total个数 } /**////////////////////////////// } }
int main() { long i; scanf("%ld%ld",&n,&k); for(i=1;i<=n;i++) scanf("%ld",&data[i]); dfs(0,0,1); printf("%ld",ans); return 0; }
|
|