1 条题解

  • 1
    //过这题不能用筛选法求素数,会爆空间。所以得把所有
    //n位的回文数都求出来,再判断是否是素数
    #include<bits/stdc++.h>
    using namespace std;
    int n,ans,a[100005],t;
    void selve(int n)
    {
        int cl=pow(10,(n+1)/2);
        for(int i=1;i<=cl;i++)
        {
            string s1=to_string(i);
            string s2=s1;
            reverse(s2.begin(),s2.end());
            int r1=stoi(s1+s2);
            if(s1.size()+s2.size()==n)a[++t]=r1;
            s2.erase(0,1);
            int r2=stoi(s1+s2);
            if(s1.size()+s2.size()==n)a[++t]=r2;
        }
    }
    bool zs(int x)
    {
        if(x<2)return 0;
        for(int i=2;i*i<=x;i++)
            if(x%i==0)return 0;
        return 1;
    }
    signed main()
    {
        ios::sync_with_stdio(false);
        cin>>n;
        selve(n);
        for(int i=1;i<=t;i++)
            if(zs(a[i]))ans++;
        cout<<ans<<endl;
        return 0;
    }
    
    
    • @ 2024-01-06 13:41:04
      //希望看到的人不要直接抄,好好理解一下。
      //这题我做了四十几分钟,要珍惜别人的劳动成果。
      
    • @ 2024-01-06 17:38:02

      你那函数我有点不懂,脑子要炸了

    • @ 2024-01-20 17:30:22

      @2212116沈俊彦: 那个是回文数生成,比如12可以生成121和1221这两个回文数,就是位数高的回文数由位数低的数生成,然后每一个可以生成两个回文数。并且用string里面的迭代器生成很方便。

    • @ 2024-01-20 17:47:43

      @2212116沈俊彦: 不过我这代码生成回文数时有重复计算,要不你帮我优化一下><

  • 1

信息

ID
1802
难度
7
分类
(无)
标签
递交数
102
已通过
17
通过率
17%
被复制
5
上传者