top1编程
← 返回题目
题解

【入门】组合+判断素数

1 条题解

  • 0
    @ 2026-7-29 0:16:58
    #include<bits/stdc++.h>
    using namespace std;
    long long n,k,a[99],cnt;
    int ss(int k){
    	if(k<=1){
    		return 0;
    	}
    	for(int j=2;j*j<=k;j++){
    		if(k%j==0){
    			return 0;
    		}
    	}
    	return 1;
    }
    void xuan_and_pan(long long g,long long wei,long long s){
    	s+=a[wei];
    	if(g!=k){
    		if(wei<n){xuan_and_pan(g+1,wei+1,s);}
    	}else{
    		if(ss(s)){
    			cnt++;
    		}
    	}
    	if(wei<n){
    	xuan_and_pan(g,wei+1,s-a[wei]);}
    }
    
    int main(){
    	ios::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    	cin>>n>>k;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	xuan_and_pan(1,1,0);
    	cout<<cnt;
    	return 0;
    }
    
    • 1