zoukankan      html  css  js  c++  java
  • 洛谷 P1217 [USACO1.5]回文质数 Prime Palindrome

    (题目链接:https://www.luogu.org/problemnew/show/P1217)

    然后说一下我的做题过程吧:

    一看到是普及-的题,就没有考虑什么筛法,只是用最暴力的筛素数的方法做的,然后就导致最后一个点TLE;

    接着是一个改进,又用了埃氏筛,可是它太不稳定了,然后数组总是开小,然后就各种TLE,MLE,RE...

    最后用的是欧拉筛(线性筛),然后还是最后一个点TLE...然后就很纳闷,看了题解之后才发现有这样的一个东西:

    1.偶数位数回文数(除11)必定不是质数(自行百度),所以只要运行到10000000

    然后发现将读入后的b进行一次判断就可以了,然后这种方法,暴力筛还是TLE,埃氏筛由于不稳定也TLE,最终还是只有欧拉筛(线性筛)好用....

    思路:

    主要是在a到b的这段区间中先判断是否为回文数(注意判断回文数的方法),并且用欧拉筛判断是否为素数即可...

     

    重难点:

      偶数位数回文数(除11)必定不是质数(自行百度),所以只要运行到10000000

    否则会一直TLE(不开O2)

    下面是欧拉筛的AC代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 
     4 using namespace std;
     5 
     6 int a, b;
     7 const int maxn = 10000005; 
     8 
     9 int cnt;
    10 int prime[maxn];
    11 int vis[maxn];
    12 bool pp[maxn];
    13 
    14 inline void is_prime(){
    15     for(int i = 2; i <= b; i++){
    16         if(!vis[i]) prime[++cnt] = i, pp[i] = 1;
    17         for(int j = 1; j <= cnt && i * prime[j] <= b; j++){
    18                vis[i * prime[j]] = true;
    19             if(i % prime[j] == 0) break;
    20            }
    21        }
    22 }//欧拉筛判断质数 
    23 
    24 inline int hui_wen(int x){
    25     int t = 0;
    26     int y = x;
    27     while(y != 0){
    28         t = t * 10 + y % 10;
    29         y = y / 10;
    30     }
    31     if(t == x) return 1;
    32     return 0;
    33 }//判断回文数 
    34 
    35 int main(){
    36     scanf("%d%d", &a, &b);
    37     if(b > 10000000) b = 10000000;//重点 
    38     is_prime();
    39     for(int i = a; i <= b; i++){
    40         int n = i;
    41         if(hui_wen(n) && pp[n] ) printf("%d
    ", n);
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    array_unique() 去重复
    datagrid导出数据
    $this->success传递数据
    二分+暴力状压+桶——cf1288D
    乱搞+虚假莫队?+树状数组——cf1288E
    字符串+置换+莫队离线处理——cf1290B
    扩展域并查集+图论——cf1290C 好题
    换根dp+暴力+预处理+记忆化搜索——cf1292C好题!
    线段树,思维——cf1295E
    暴力,贪心——cf1292B
  • 原文地址:https://www.cnblogs.com/New-ljx/p/10686537.html
Copyright © 2011-2022 走看看