1 solutions

  • 0
    @ 2025-11-5 16:12:40

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cctype>
    #include<iomanip>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int n,k,x[1001],ans=0;
    bool prime(int a){
    	if(a==0||a==1) return 0;
    	if(a==2) return 1;
    	if(a%2==0) return 0;
    	for(int i=3;i<=sqrt(a);i+=2) if(a%i==0) return 0;
    	return 1;
    }
    void dnf(int e,int tot,int k1){
    	if(e==k) {
    		if(prime(tot)) ans++;
    		return;
    	}
    	for(int i=k1;i<n-k+e+2;i++) {
    		dnf(e+1,tot+x[i],i+1);
    	}
    }
    int main(){
    	int i,j;
    	//freopen("num.in","r",stdin);
    	//freopen("num.out","w",stdout);
    	scanf("%d%d",&n,&k);
    	for(i=1;i<=n;i++) scanf("%d",&x[i]);
    	dnf(0,0,1);
    	printf("%d\n",ans);
    	return 0;
    }
    
    • 1

    Information

    ID
    17574
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By