选数 codevs1008

来源:互联网 发布:windows api编程 编辑:程序博客网 时间:2024/06/05 08:02
#include<stdio.h>#include<stdlib.h>int n,k,x[10001],a[10001];int zs(int x){    if(x==1)return 0;    for(int i=2;i*i<=x;i++)        if(x%i==0)return 0;    return 1;}int ok(){    int ans=0;    for(int i=1;i<=k;i++)        ans+=x[i];//  printf("%d\n",ans);    if(zs(ans))return 1;    return 0;}int max;void out(){    max++;    int i;    //for(i=1;i<=k;i++)     //   printf("%d%c",x[i],i==k?'\n':' ');}int b[1001];void search(int i,int p){    int j;    for(j=p+1;j<=n;j++){        if(!b[j]){            b[j]=1;            x[i]=a[j];            if(i<k)search(i+1,j);            else if(ok())out();            b[j]=0;        }    }}int main(){    int i,j,m;    scanf("%d%d",&n,&k);    for(i=1;i<=n;i++)        scanf("%d",&a[i]);    search(1,0);    printf("%d\n",max);    return 0;}
0 0
原创粉丝点击