1 条题解

  • 1

    #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
1010
难度
8
分类
(无)
标签
递交数
28
已通过
3
通过率
11%
被复制
12
上传者