大佬们,help,
查看原帖
大佬们,help,
579961
JunBuJian楼主2022/2/10 14:29
#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;
const int N = 25;
int a[N];
bool st[N];
int n,k,idx;
vector<int> sum;

void dfs(int u,int S)
{
    if(u == k+1)
    {
        sum.push_back(S);
        return ;
    }
    
    for(int i = 1;i <= n;i ++)
    {
        if(!st[i])
        {
            S += a[i];
            st[i] = true;
            
            dfs(u + 1,S);
            S -= a[i];
            st[i] = false;
        }
    }
}
bool prime(int x)
{
    if(x == 1) return false;
    for(int i = 2;i <= x/i;i ++)
    {
        if(x % i == 0) return false ;
    }
    return true;
}
int main()
{
    cin >> n >> k;
    
    for(int i = 1;i <= n;i ++) cin >> a[i];//读入
    
    dfs(1,0);
    
    sort(sum.begin(),sum.end());排序以便去重
    sum.erase(unique(sum.begin(),sum.end()),sum.end());//去重
    
    long long res = 0;
    for(int i = 0;i < sum.size();i ++) {
        if(prime(sum[i])) res ++;
    }
    
    cout << res;
    return 0;
}
2022/2/10 14:29
加载中...