1 条题解

  • 0
    @ 2023-6-11 12:20:43

    C++ :

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    
    using namespace std;
    int n,r,a[110],b[110],ans;
    bool v[110];
    
    bool pd(int x)
    {
        if(x<=1) return false;
        int tt=int(sqrt(double(x)+1.0));
        for(int i=2;i<=tt;i++)
        {
           if( x%i==0)
           {
                return false;
           }
        }
        return true;
    }
    void dfs(int k)
    {
        int i;
        if(k==r+1)
        {
            int ss=0;
            for(i=1;i<=r;i++) ss+= b[a[i]];
            if( pd(ss)==true) ans++;
        }
        else
        {
            for(i=a[k-1]+1;i<=n;i++)
               if( v[i])
               {
                  v[i]=0;
                  a[k]=i;
                  dfs(k+1);
                  v[i]=1;
               }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&r);
        for(int i=1;i<=n;i++) scanf("%d",&b[i]);
        memset(v,1,sizeof(v));
        a[0]=0;ans=0;
        dfs(1);
        printf("%d\n",ans);
        return 0;
    }
    
    • 1

    信息

    ID
    2599
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者