1 条题解

  • 0
    @ 2026-1-20 12:36:52
    #include<bits/stdc++.h>
    using namespace std;
    int n,mid,a[10],b[11110000],ans;
    bool pd(int x)
    {
        if(x<2)return 0;
        int t=sqrt(x+1);
        for(int i=2;i<=t;i++)if(x%i==0)return 0;
        return 1;
    }
    void dfs(int k)
    {
    	if(k>mid)
    	{
    		int s=0;for(int i=1;i<=n;i++)s=s*10+a[i];
    		if(pd(s))b[++ans]=s;
    		return ;
    	}
    	for(int i=0;i<=9;i++)
    	{
    		if( (k==1) && (i==0) )continue;
    		a[k]=a[n-k+1]=i;
    		dfs(k+1);
    	}
    }
    int main()
    {
        scanf("%d",&n);
        mid=(n+1)/2;
        ans=0;
        dfs(1);
        printf("%d\n",ans);
        for(int i=1;i<=ans;i++) printf("%d ",b[i]);
        return 0;
    }
    
    • 1

    信息

    ID
    842
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    305
    已通过
    77
    上传者