只有33救救孩子吧。。。
查看原帖
只有33救救孩子吧。。。
298432
固执的一条鱼楼主2020/5/20 19:39
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
const int maxn=5000000;
int ans=0;
int an[22];
int cn[22];
bool vis[maxn];
map<int,int> vis2;
int n,k;
void dfs(int tp)
{
    if(tp>k){
        long long sum=0;
        for(int i=1;i<=k;i++){
            sum+=an[i];
        }
        if(vis2[sum]!=1){
            vis2[sum]=1;
            bool f=false;
            for(int i=2;i<sum;i++){
                if(sum%i==0){
                    f=true;
                    break;
                }
            }
            if(!f) ans++;
        }
        return;
    }
    for(int i=1;i<=n;i++){
        if(!vis[cn[i]]){
            vis[cn[i]]=true;
            an[tp]=cn[i];
            dfs(tp+1);
            vis[cn[i]]=false;
        }
    }
}
int main()
{
    memset(vis,false,sizeof vis);
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>cn[i];
    dfs(1);
    cout<<ans<<endl;
}

2020/5/20 19:39
加载中...