1 条题解

  • 0
    @ 2025-8-20 22:59:56
    #include <bits/stdc++.h>
    using namespace std;
    int n,k;
    int num1[1001];
    int ans = 0;
    bool isPrime(int num)
    {
        if(num<2)
        {
            return false;
        }
        if(num==2)
        {
            return true;
        }
        for(int i=2;i<=sqrt(num);i++)
        {
            if(num%i==0)
            {
                return false;
            }
        }
        return true;
    }
    void dfs(int start,int cnt,int num)
    {
        if(cnt==k)
        {
            if(isPrime(num))
            {
                ans++;
            }
            return;
        }
        for(int i=start;i<n;i++)
        {
            dfs(i+1,cnt+1,num+num1[i]);
        }
    }
    int main()
    {
        cin>>n>>k;
        for(int i=0;i<n;i++)
        {
            cin>>num1[i];
        }
        dfs(0,0,0);
        cout<<ans<<endl;
        return 0;
    }
    

信息

ID
536
时间
1000ms
内存
256MiB
难度
10
标签
(无)
递交数
1
已通过
1
上传者