1 条题解

  • 1
    @ 2026-8-3 10:21:21

    题目分析

    本题为搜索题。

    对于每个 aia_i,都有取与不取两种情况。若取,则累加和,否则,保持原总和不变。最后,所有数字全部选好取与不取,即递归层数 >n>n 时,判断总和是否为素数即可。

    参考代码(C++)

    #include<bits/stdc++.h>
    using namespace std;
    int n,k,ans;
    int a[25];
    void dfs(int d,int s,int sum){
        if(d>n){
            for(int i = 2;i*i<=sum;i++)if(!(sum%i))return;
            ans++;
            return;
        }
        if(s)dfs(d+1,s-1,sum+a[d]);
        if(n-d>=s)dfs(d+1,s,sum);
    }
    int main(){
        cin>>n>>k;
        for(int i = 1;i<=n;i++)cin>>a[i];
        dfs(1,k,0);
        cout<<ans;
    }
    
    • 1

    信息

    ID
    106
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    40
    已通过
    3
    上传者