【求助】WA #1 #4
查看原帖
【求助】WA #1 #4
889498
Bei_Gua_楼主2023/9/1 18:38

个人感觉写的真没啥问题吧

(其实是太菜了看不出来)

Code:

#include<bits/stdc++.h>
#define int long long
#define N 25
using namespace std;
int n,k,a[N],ans;
bool vi[5000050]={false};
bool isPrime(int n){
    if (n==1||n==2)return true;
    for (int i=2;i<sqrt(n*1.0);i++){
        if (n%i==0)return false;
    }
    return true;
}
void dfs(int dep,int sum,int startx){
    if (dep>k){
        bool f=isPrime(sum);
        if (f)ans++;
    }else{
        for (int i=startx;i<=n;i++){
            if (!vi[a[i]]){
                vi[a[i]]=true;
                dfs(dep+1,sum+a[i],i+1);
                vi[a[i]]=false;
            }
        }
    }
}
signed main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>n>>k;
    for (int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a,a+n+1);
    dfs(1,0,1);
    cout<<ans;
}

求dalao指点!

2023/9/1 18:38
加载中...