• poj3247:回文素数


    总时间限制: 5000ms 内存限制: 65536kB
    描述
    一个数如果从左往右读和从右往左读数字是相同的,则称这个数是回文数,如121,1221,15651都是回文数。给定位数n,找出所有既是回文数又是素数的n位十进制数。(注:不考虑超过整型数范围的情况)。
    输入
    位数n,其中1<=n<=9。
    输出
    第一行输出满足条件的素数个数。
    第二行按照从小到大的顺序输出所有满足条件的素数,两个数之间用一个空格区分。
    样例输入
    1
    样例输出
    4
    2 3 5 7

    这道题挺简单的,本来自己是肯定能够想到平方根为界限的,我开始自己傻了吧唧的,想减少判断过程所需的时间,于是想要初始化的时候预处理出所有小于1000000000是否为素数的标记

    结果估计初始化的过程就超时了。。。

    直接贴代码了,这太简单了。。。

    #include <iostream>
    #include <queue>
    #include <stdio.h>
    using namespace std;
    
    const int MAX = 1000000000;
    int n;
    queue<int> q;
    int m[10]={0};
    int coun = 0;
    
    
    bool OK(int k)
    {
        if(k <= 1)
            return false;
        for(int i = 2; i * i <= k; i++)
        {
            if(k%i == 0)
                return true;
    
        }
        return false;
    }
    
    
    void work(int i)
    {
        if(i == n)
        {
            int res = 0;
            for(int j = 0; j < n; j++)
            {
                res *= 10;
                res += m[j];
             }
             if(OK(res))
             {
                 q.push(res);
                 coun++;
             }
             return ;
        }
        if( i < n/2 || ( n%2!=0 && i < n/2+1 ) )
        {
            for(int j = 0; j < 10; j++)
            {
                if(i == 0 &&((j == 0 || j == 2 || j == 5 || j == 4 || j == 6 || j == 8)&&n>1) )
                {
                    continue;
                }
                m[i] = j;
                work(i+1);
            }
        }
        else
        {
                m[i] = m[n-1-i];
                work(i+1);
        }
    }
    
    int main()
    {
        scanf("%d",&n);
        work(0);
        printf("%d
    ",coun );
        for(int i = 0; i < coun; i++)
        {
            int res = q.front();
            q.pop();
            printf("%d ", res);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    Redis开发与运维:SDS
    Redis开发与运维:数据迁移
    我的2019上半年
    C# 并发编程
    经典排序算法 — C# 版(上)
    图解 -- 树的汇总
    图解--队列、并发队列
    栈到CLR
    我们的数组
    算法复杂度
  • 原文地址:https://www.cnblogs.com/xiaoshen555/p/3843855.html
Copyright © 2020-2023  润新知