写着写着就写挂了!WA*7+AC*1+RE*1
查看原帖
写着写着就写挂了!WA*7+AC*1+RE*1
668599
BearBig楼主2022/5/18 17:07

我这个方法应该和《深入浅出程序设计竞赛》(基础篇)的方法应该是一样,就是不知道为什么不能过!

#include<bits/stdc++.h>
using namespace std;
bool prime(int x)
{
    if(x==1 or x%2==0)return false;
    else
    {
        int k=sqrt(x);
        for(int i=2;i<=k;++i)
        if(x%i==0)return false;
        return true;
    }
}
int main()
{
    vector<int>prim;
    //一位数
    prim.push_back(2);
    prim.push_back(3);
    prim.push_back(5);
    prim.push_back(7);
    //二位数
    prim.push_back(11);
    //三位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)break;
        for(int j=0;j<=9;++j)
        {
            int f=i*100+j*10+i;
            prim.push_back(f);
        }
    }
    //四位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)continue;
        for(int j=0;j<=9;++j)
        {
            int f=1000*i+100*j+10*j+i;
            prim.push_back(f);
        }
    }
    //五位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)continue;
        for(int j=0;j<=9;++j)
        {
            for(int k=0;k<=9;++k)
            {
                int f=i*10000+1000*j+100*k+10*j+i;
                prim.push_back(f);
            }
        }
    }
    //六位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)continue;
        for(int j=0;j<=9;++j)
        {
            for(int k=0;k<=9;++k)
            {
                int f=i*100000+j*10000+k*1000+k*100+j*10+i;
                prim.push_back(f);
            }
        }
    }
    //七位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)continue;
        for(int j=0;j<=9;++j)
        {
            for(int k=0;k<=9;++k)
            {
                for(int x=0;x<=9;++x)
                {
                    int f=i*1000000+j*100000+k*10000+x*1000+k*100+j*10+i;
                    prim.push_back(f);
                }
            }
        }
    }
    //八位数
    for(int i=1;i<=9;i+=2)
    {
        if(i==5)continue;
        for(int j=0;j<=9;++j)
        {
            for(int k=0;k<=9;++k)
            {
                for(int x=0;x<=9;++x)
                {
                    int f=10000000*i+1000000*j+100000*k+10000*x+1000*x+100*k+10*j+i;
                    prim.push_back(f);
                }
            }
        }
    }
    int ii;int n,m;cin>>n>>m;
    for(ii=0;;++ii)
    if(prim[ii]>=n)break;
    for(;prim[ii]<=m;++ii)
    cout<<prim[ii]<<endl;
}
2022/5/18 17:07
加载中...