1 条题解

  • 0
    #include<iostream>
    #include<iomanip>
    #include<cmath>
    #include<bits/stdc++.h>
    #include<cstdio>
    #include<stdio.h>
    int num[21], n, k, book[21], tag[21], ans;
    int prime(int x)
    {
        int i, t;
        t = sqrt(x);
        for(i = 2; i <= t; i++)
        {
            if(x % i == 0)
                break;
        }
        if(i == t + 1)
            return 1;
        else
            return 0;
    }
     
    void dfs(int step, int last)
    {
        int i;
        if(step == k + 1)
        {
            int sum = 0;
            for(i = 1; i <= k; i++)
            {
                sum += num[tag[i]];
            }
            if(prime(sum))
            {
                ans++;
            }
     
            return;
        }
     
        for(i = last; i <= n; i++)
        {
            if(book[i] == 1)
                continue;
     
            book[i] = 1;
            tag[step] = i;
            dfs(step + 1, i);
            book[i] = 0;
        }
     
    }
     
    int main()
    {
        int i;
        scanf("%d%d", &n, &k);
        for(i = 1; i <= n; i++)
        {
            scanf("%d", &num[i]);
        }
        dfs(1, 1);
     
        printf("%d\n", ans);
     
        return 0;
    }
    
  • 1

信息

ID
1017
难度
4
分类
(无)
标签
递交数
39
已通过
18
通过率
46%
被复制
5
上传者