求助!用的next_permutation,wa掉了3个点
查看原帖
求助!用的next_permutation,wa掉了3个点
700167
sqy187294712楼主2022/5/28 16:51
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

int x[20];
bool is_Prime(int p)
{
    if (p==2||p==3) return true;
    if(p%2==0)  return false;
    int k=sqrt(p);
    for(int i = 3; i <=k ; i+=2)
        if (p%i==0) return false;

    return true;
}
long int frac(int n)
{
    long int s=1;
    for (int i = 1; i <=n; i++)
    s*=i;
    return s; 
}
int main()
{
    int n,k,s,num=0;
    int a[25];
    for (int i = 0; i < n; i++)a[i]=i;//自然排列
    cin>>n>>k;
    for (int i = 0; i < n; i++) scanf("%d",&x[i]);
    sort(x,x+n);
    do
    {
        s=0;
        for (int i = 0; i < k; i++)s+=x[a[i]];
        if (is_Prime(s)) num++;
        
    } while (next_permutation(a,a+n));
    num/=frac(k);//除去重复的k!次
    cout<<num;
    return 0;
}
2022/5/28 16:51
加载中...