(函数)P1217 [USACO1.5]回文质数 Prime Palindromes
题解:
第一次:
算法复杂度过高,导致编译超时,需要优化
#include<math.h>
int a[100000001] = { 0 };
int p(int n) {
int t = n, ret = 0;
while (t > 0) {
t /= 10;
ret++;
}
if (ret == 1) {
printf("%d\n", n);
return 0;
}
t = ret;
t /= 2;
ret -= 1;
while (n > 0 && t > 0) {
int a=n /pow(10, ret);
if (n % 10 == a ) {
n %= (int)pow(10, ret);
n /=10;
ret -= 2;
t--;
}
else {
return 0;
}
return 1;
}
{
int A, B, i, j;
scanf("%d %d", &A, &B);
//0:质数,1:合数
for (i = 2; i < sqrt(B); i++) {
for (j = i+1; j <= B; j++) {
if (j % i == 0 && a[j] == 0) {
a[j] = 1;
}
}
}
for (i = A; i <= B; i++) {
if ( a[i] == 0&&p(i)) {
printf("%d\n", i);
}
}
return 0;
}
a[j] = 1;
}
for (i = 3; i <3163; i+=2) { //sqrt()
for (j = i*2; j <= 10000000; j+=i) {
if ( a[j] == 0) {
a[j] = 1;
}
}
}
{
int y=x,num=0;//int y=x,防止x被改变
while (y!=0)
{
num=num*10+y%10;//上一次数字的记录进位再加上下一位数
y/=10;
}
if (num==x) return 1;
else return 0;
}
2.你会发现,6同时被2和3各筛了一次。它在计算时就被访问了两次,这样会导致效率低下。
原理:对于任意合数,必定可以有最小质因子乘以最大因子的分解方式。因此,对于每个合数,只要用最大因子筛一遍,枚举时只要枚举最小质因子即可。
int vis[MAXN];
int prime[MAXN];
void Prime()
{
int cnt=0;
for(int i=2;i<=n;i++)
{
if(!vis[i]) prime[cnt++]=i;
for(int j=0;j<cnt&&i*prime[j]<=n;j++)
{
vis[i*prime[j]]=i;
if(i%prime[j]==0) break;
}
}
}
(函数)P1217 [USACO1.5]回文质数 Prime Palindromes的更多相关文章
- P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- luogu P1217 [USACO1.5]回文质数 Prime Palindromes x
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)
技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...
- Java实现 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
import java.util.Scanner; public class Main { private static Scanner cin; public static void main(St ...
- [USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
随机推荐
- 洛谷 P3205 [HNOI2010]合唱队(区间dp)
传送门 解题思路 观察队形的组成方式可以得出,最后一名加入区间i...j的人要么是在i位置上,要么是在j位置上,所以我们可以用dp[i][j][0]表示区间i...j最后一个加入的人站在i位置上的方案 ...
- UVA - 122 Trees on the level (二叉树的层次遍历)
题意:给定结点值和从根结点到该结点的路径,若根到某个叶结点路径上有的结点输入中未给出或给出超过一次,则not complete,否则层次遍历输出所有结点. 分析:先建树,建树的过程中,沿途结点都申请了 ...
- 51nod 1423:最大二“货”
1423 最大二"货" 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 取消关注 白克喜欢找一个序列 ...
- Rabbitmq之高级特性——百分百投递消息&消息确认模式&消息返回模式实现
rabbitmq的高级特性: 如何保障消息的百分之百成功? 要满足4个条件:生产方发送出去,消费方接受到消息,发送方接收到消费者的确认信息,完善的消费补偿机制 解决方案,1)消息落库,进行消息状态打标 ...
- 7 —— node —— 响应图片
const http = require('http'); const fs = require('fs'); const server = http.createServer(); server ...
- cf221 D. Little Elephant and Array
题解真的是太神奇了2333 用离线和树状数组(为什么感觉和HH的项链是的,什么鬼),比较巧妙的是他把整个数列分成几段.用一个vector来记录每个数出现的位置.一共就是data[a[i]][sz]-- ...
- NOIP2016天天爱跑步解题思路
算法:LCA,树上差分+(乱搞) 如果有写错的地方请大佬更正 对于100%数据: u表示起点,v表示终点 对于一条u到v的路径,先讨论LCA!=u&&LCA!=v的情况: 分为u到LC ...
- SQLAlchemy建立数据库模型之间的关系
一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,外键不可少 ## 外键(ForeignKey)总在多的那边定义,关系(relatio ...
- python 检测端口是否被占用
前记 python中有些常用的东西,虽然小,但是非常实用.这里就做个备忘吧. 实例 检测端口是否被占用. ''' -- coding: utf-8 -- import os import sock ...
- 一百零九、SAP的OO-ALV之三,屏幕绘制器的使用
一.在Screen页面,点击格式,会打开屏幕绘制器 二.点击定制控制,和PS一样画出一个显示区域的画布容器 三.双击之后,在弹出的属性页面写入一个名字,保存 四.激活屏幕后关闭 五.关闭屏幕绘制器之后 ...