全WA,求助
查看原帖
全WA,求助
740948
rb_tree楼主2024/3/19 22:57

rt,用的回溯法写的

#include<cstdio>
#include<cmath>
using namespace std;
int dx[25],n,k,ans;
bool used[25];
inline bool prime(int n)
{
    int sqrtn=floor(sqrt(n));
    for(int i=2;i<=sqrtn;i++)
    {
        if(n%i==0) return 0;
    }
    return 1;
}
inline void write(int x) 
{
    if(x<0) 
    { 
        x=-x;
        putchar('-');
    }
    if(x>9) write(x/10);
    putchar((x%10)^48);
}
inline int read()
{
    int x=0,w=1;
    char ch=0;
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=(x<<1)+(x<<3)+(ch^'0');
        ch=getchar();
    }
    return x*w;
}
inline void dfs(int x,int deepth)
{
    if(deepth==k) 
    {
        if(prime(x)==1) ans++;
        return;
    }
    for(int i=1;i<=n;i++)
    {
        if(used[i]==0)
        {
            used[i]=1;
            dfs(x+dx[i],++deepth);
            used[i]=0;
        }
    }
}
int main()
{
    n=read();
    k=read();
    for(int i=1;i<=n;i++) dx[i]=read();
    dfs(0,0);
    write(ans);
    return 0;
}
2024/3/19 22:57
加载中...