求助,直接TLE!
查看原帖
求助,直接TLE!
1242208
wyp20130701_是一个蒟蒻楼主2024/6/23 11:02
#include <iostream>
using namespace std;
bool isnp[100000005],flag[25];
int n,k,x[25],book[25],ans;
void dfs(int step)
{
    if (step == k + 1)
    {
        int cnt = 0;
        for (int i = 1;i <= k;i++)
        {
            cnt += book[i];
        }
        if (!isnp[cnt])
        {
            ans++;
        }
        return ;
    }
    for (int i = 1;i <= n;i++)
    {
        if (!flag[i])
        {
            book[step] = x[i];
            flag[i] = true;
            dfs(step + 1);
            flag[i] = false;
        }
    }
}
int main()
{
    for (int i = 2;i <= 100000000;i++)
    {
        if (!isnp[i])
        {
            for (int j = 2 * i;j <= 100000000;j += i)
            {
                isnp[j] = true;
            }
        }
    }
    cin >> n >> k;
    for (int i = 1;i <= n;i++)
    {
        cin >> x[i];
    }
    dfs(1);
    cout << ans / 6;
    return 0;
}
2024/6/23 11:02
加载中...