help
查看原帖
help
1218327
hhwshh楼主2024/1/10 14:13
#include <stdio.h>
#include <stdlib.h>
int mark[5000000], a[20], k, count=0, n;

int prime(int n)
{
    int i, flag=1;
    for(i=2; i*i<=n; i++)
    {
        if(n%i==0)
        {
            flag=0;
            break;
        }
    }
    return flag;
}

void dfs(int step, int sum)
{
    int i;
    if(step==k)
    {
        if(prime(sum))
            count++;
        return;
    }
    for(i=0; i<n; i++)
    {
        if(mark[a[i]]==0)
        {
            mark[a[i]]=1;
            dfs(step+1, sum+a[i]);
            mark[a[i]]=0;
        }
    }
}

int main()
{
    int i, j;
    scanf("%d%d", &n, &k);
    for(i=0; i<n; i++)
        scanf("%d", &a[i]);
    dfs(0, 0);
    printf("%d", count);
    return 0;
}

2024/1/10 14:13
加载中...