首页 > 其他分享 >补题:回文质数

补题:回文质数

时间:2023-01-09 21:13:27浏览次数:40  
标签:prime int 质数 num 补题 include 回文

本质上这题还是有关筛素数,但是增多了一些细节,还是值得注意和思考一下的

  • 题目大意为在一个有限范围内求出[a,b]内即是回文数又是质数的数并打出

  • 一开始是也是想先把质数筛出来,出现的问题主要是回文数的判断这里浪费的许多空间以至于MLE了过不去,用的to_string加reverse加string大数组,再加上对数据的范围不熟悉(题目的数据范围是一亿),以至于用龙long long浪费了大量的空间,根本过不去。
  • 其实回文数的判断只需要这样就行了,基本没花什么空间
    1 bool judge(int n) {
    2     int num = n, m = 0;
    3     while (n) {
    4         m = m * 10 + n % 10;
    5         n /= 10;
    6     }
    7     if (m == num)return true;
    8     return false;
    9 }

    之后就改为了将范围内的所有素数筛出来后判断就可以了,下面是ac代码

  •  1 #include<iostream>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 #include<string>
     6 using namespace std;
     7 
     8 const int N = 1e7;
     9 
    10 int prime[N], cnt, ans[N], num;
    11 bool st[N];
    12 
    13 void find_prime(int b) {
    14     if (b > 1e7)b = 9999999;
    15 
    16     for (int i = 2; i <= b; i++) {
    17 
    18         if (!st[i])prime[cnt++] = i;
    19 
    20         for (int j = 0; prime[j] <= b / i; j++) {
    21             st[prime[j] * i] = true;
    22             if (i % prime[j] == 0)break;
    23         }
    24     }
    25 }
    26 
    27 bool judge(int n) {
    28     int num = n, m = 0;
    29     while (n) {
    30         m = m * 10 + n % 10;
    31         n /= 10;
    32     }
    33     if (m == num)return true;
    34     return false;
    35 }
    36 
    37 int main()
    38 {
    39     int a, b;
    40     cin >> a >> b;
    41     find_prime(b);   
    42     for (int i = cnt - 1; prime[i] >= a; i--) {
    43         if (judge(prime[i]))ans[num++] = prime[i];
    44     }
    45     for (int i = num - 1; i >= 0; i--)cout << ans[i] << endl;
    46     return 0;
    47 }

     

  • 不过我们可以看到我们间接也学会了如何在任意区间里面筛素数,我们只需要将用传统的素数筛法将大边界以内的素数筛出来再对要用的数据范围加以限制就好了。

标签:prime,int,质数,num,补题,include,回文
From: https://www.cnblogs.com/hamster-er/p/17038525.html

相关文章

  • 质数筛法
    质数筛法引入原题链接:P3912素数个数-洛谷求\(1\simn\)有多少个质数朴素求法,时间复杂度\(O(n\sqrt{n})\)importjava.util.Scanner;publicclassMain{......
  • The 14th Jilin Provincial Collegiate Programming Contest(补题)
    The14thJilinProvincialCollegiateProgrammingContest(补题)题目A这个题目我理解错了,题目里说的距离我以为是绝对值,没想到是差值,意思理解对了就很容易#include<io......
  • 牛客小白月赛补题65
    A.牛牛去购物这道题目纯纯数学题,一遍一遍更新最小值,我们每一次都用a*i+b*j,计算出最小的答案ACcode#include<bits/stdc++.h>#defineintlonglongconstint......
  • THUCTF 待补题(web)
    我真的会谢!(THU提前把通道关了)看了一下T11. What is $<?php//error_reporting(1);functionautoload($class){@include_once(__DIR__.'/'.strtolower(str_r......
  • LeetCode 5_最长回文子串
    LeetCode5:最长回文子串题目给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s="babad"输出:"b......
  • HZNU Winter Trainning STL 补题
    2023.01.03HZNUWinterTrainningSTL补题CodeForces-4C题意:给你n个字符串,如果某个字符串出现过,则在这个字符串后面加上1,2,3,4....以此类推题解:利用map记录某个字符......
  • The 15th Jilin Provincial Collegiate Programming Contest(补题)
    The15thJilinProvincialCollegiateProgrammingContest(补题)这次只做了4个题,感觉自己还有很多不足,加油ヾ(◍°∇°◍)ノ゙这次发现好多题都需要cin加速器,好多题不加这......
  • 寒假第一次洛谷蓝桥个人赛 题解+补题(下)
    D.灵能传输##神仙结论把前缀和应用到极致,6先考虑三个数a,b,c,进行一次变换也就是a+b,-b,c+b可见三个数之和不变,也就是s[3]不变然后之前的s[1]+b,愿称之为s[2]之前的s......
  • P1217 [USACO1.5]回文质数 Prime Palindromes
    题目题目描述因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。写一个程序来找出范围[a,b](5<=a<b<=100,000,000)(一亿)间的......
  • Prime number 质数相关
    什么是质数?在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数,比如:2,3,5,7,11...什么是合数?比1大但不是素数的数称为合数。1和0既非素数也非合数。合数是......