16分........
查看原帖
16分........
865793
better_Z楼主2023/5/31 16:27
#include<iostream>

#include<cstdio>

#include<cmath>

int n,k,a[21],ads=0;

bool vis[21];

bool isprime(int x){

    int f=sqrt(x);

    for(int i=1;i<=f;i++){

        if(x%i==0)return false;

    }

    return true;

}

void dfs(int deep,int ans){

    if(deep>k){

        if(isprime(ans)){

            ads++;

            return;

        }

    }

    for(int i=1;i<=n;i++){

        if(!vis[i]){

          int t=a[i]+ans;

          vis[i]=1;

          dfs(deep+1,t);

          vis[i]=0;

        }

    }

}

using namespace std;

int main(){

    cin>>n>>k;

    for(int i=1;i<=n;i++){

        cin>>a[i];

    }

    dfs(1,0);

    printf("%d",ads);

    return 0;

}
2023/5/31 16:27
加载中...