东大OJ-5到100000000之间的回文质数
1217: VIJOS-P1042
时间限制: 0 Sec 内存限制: 128 MB
提交: 78 解决: 29
[提交][状态][讨论版]
题目描述
=M< N< =100,000,000),你要算出M,N之间需要换气的都有哪几步。(包括M,N)。算出来的可以提升为本堂一级弟子,月薪(1000000000000000000000000000000000000000000 MOD 10 )元。
输入
输出
样例输入
100 500
样例输出
101 131 151 181 191 313 353 373 383
#include<stdio.h> #include<string.h> int prime[4000]; int psize; int from, to; void getPrime(){ memset(prime, 0, sizeof(prime)); psize = 0; int i,j; bool a[10000]; memset(a, -1, sizeof(a)); for (i = 2; i < 10000; i++){ if (!a[i])continue; prime[psize++] = i; for (j = i + i; j < 10000; j+=i)a[j] = false; } } bool isPrime(int n){ int i; for (i = 0;prime[i]*prime[i]<=n; i++)if (n%prime[i] == 0)return false; return true; } void one(){ if (from>7)return; if (from == 5)printf("5\n"); printf("7\n"); } void three(){ if (from > 999)return; int i, j,k; int a[4] = { 1, 3, 7, 9 }; for (i = 0; i < 4;i++) for (j = 0; j < 10; j++){ k = a[i] * 100 + j * 10 + a[i]; if ( k< from)continue; if (k>to)return; if (isPrime(k))printf("%d%d%d\n", a[i], j,a[ i]); } } void five(){ if (from>99999)return; int a[4] = { 1, 3, 7, 9 }; int i, j, k, l; for (i = 0; i < 4;i++) for (j = 0; j < 10;j++) for (k = 0; k < 10; k++){ l = a[i] * 10000 + j * 1000 + k * 100 + j * 10 + a[i]; if (l<from)continue; if (l>to)return; if (isPrime(l))printf("%d%d%d%d%d\n", a[i], j, k, j, a[i] ); } } void seven(){ if (from>9999999)return; int a[4] = { 1, 3, 7, 9 }; int i, j, k, l,m; for (i = 0; i < 4; i++) for (j = 0; j < 10; j++) for (k = 0; k < 10; k++) for(m=0;m<10;m++){ l = a[i] * 1000000 + j * 100000 + k * 10000 + m * 1000 +k*100+j*10+ a[i]; if (l<from)continue; if (l>to)return; if (isPrime(l))printf("%d%d%d%d%d%d%d\n", a[i], j, k,m,k, j, a[i]); } } int main(){ getPrime(); prime[psize++]=10001; scanf("%d%d", &from, &to); one(); if (11 >= from && 11 <= to)printf("11\n"); three(); five(); seven(); return 0; }上面这个5ms再慢一点的算法:6311ms
#include<stdio.h> #include<string.h> #include<math.h> int prime[4000]; int psize; int from, to; void getPrime(){ memset(prime, 0, sizeof(prime)); psize = 0; int i,j; bool a[10000]; memset(a, -1, sizeof(a)); for (i = 2; i < 10000; i++){ if (!a[i])continue; prime[psize++] = i; for (j = i + i; j < 10000; j+=i)a[j] = false; } } bool isPrime(int n){ int i; for (i = 0;prime[i]*prime[i]<=n; i++)if (n%prime[i] == 0)return false; return true; } bool isHuiwen(int n,int wei){ if (wei == 0||wei==1)return true; int i; if (n /(int) pow((double)10, wei-1) == n % 10){ n %= (int)pow((double)10, wei-1); n /= 10; if (isHuiwen(n, wei - 2))return true; } return false; } int main(){ getPrime(); prime[psize++]=10001; scanf("%d%d", &from, &to); if (from == 5)printf("5\n"); if (from <= 7 && to >= 7)printf("7\n"); if (11 >= from && 11 <= to)printf("11\n"); if (from < 100)from = 101; for (; from <= to; from++){ int wei = log10((double)from)+1; if (wei % 2 == 0){ from = pow((double)10, wei); wei++; if (from>to)break; } if (isPrime(from) && isHuiwen(from,wei)) printf("%d\n", from); } return 0; }最慢42805ms
#include<stdio.h> #include<string.h> #include<math.h> int prime[4000]; int psize; int from, to; void getPrime(){ memset(prime, 0, sizeof(prime)); psize = 0; int i,j; bool a[10000]; memset(a, -1, sizeof(a)); for (i = 2; i < 10000; i++){ if (!a[i])continue; prime[psize++] = i; for (j = i + i; j < 10000; j+=i)a[j] = false; } } bool isPrime(int n){ int i; for (i = 0;prime[i]*prime[i]<=n; i++)if (n%prime[i] == 0)return false; return true; } bool isHuiwen(int n,int wei){ if (wei == 0||wei==1)return true; int i; if (n /(int) pow((double)10, wei-1) == n % 10){ n %= (int)pow((double)10, wei-1); n /= 10; if (isHuiwen(n, wei - 2))return true; } return false; } int main(){ getPrime(); prime[psize++]=10001; scanf("%d%d", &from, &to); if (from == 5)printf("5\n"); if (from <= 7 && to >= 7)printf("7\n"); if (11 >= from && 11 <= to)printf("11\n"); if (from < 100)from = 101; for (; from <= to; from++){ if (isPrime(from) && isHuiwen(from,log10((double)from)+1)) printf("%d\n", from); } return 0; }
东大OJ-5到100000000之间的回文质数的更多相关文章
- P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
- 回文质数 USACO
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 15 ...
- 洛谷 P1217 回文质数
洛谷 P1217 回文质数 链接 https://www.luogu.org/problem/P1217 题目 题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 ...
- P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)
题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...
- 【USACO 1.5.2】回文质数
[题目描述] 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,0 ...
- 回文质数 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 ...
- [USACO1.5] 回文质数
P1217 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 < ...
- 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes
P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...
随机推荐
- mongo数据备份及恢复脚本
#!/bin/bashtime="$(date +"%Y.%m.%d")" id=`echo "show dbs;"|/usr/local/ ...
- corefile 设置
程序运行的过程中,可能会因为一些隐藏的bug导致崩溃,为了在出问题时,及时记录所在环境的情况,所以要设置core文件的产生.其实其本质就是把进程的内存保存到文件中去. 1.core文件的生成开关和大小 ...
- Android adb push 和 pull操作
由于安卓真机本地调试时,每次启动并生成apk然后安装到设备比较费时,而很多情况是仅仅修改了hot 脚本文件(cocos2dx + lua). 所以,使用热更机制把修改后的lua文件push到热更目录( ...
- 学习OpenStack之 (2):Cinder LVM 配置
0.背景 OpenStack 中的实例是不能持久化的,cinder服务重启,实例消失.如果需要挂载 volume,需要在 volume 中实现持久化.Cinder提供持久的块存储,目前仅供给虚拟机挂载 ...
- 一起来啃书——PHP看书
形式所迫,不得不开展android的学习,PHP这边也开始了啃书的日子.两部500+的书,45天够不,有点忙有点忙... 早上的胃胀,简直是一记闷棍,长点儿记性吧........ 1.PHP+MYSQ ...
- Sql动态添加字段的正确姿势
如何给指定表动态添加字段? 一.创建一张表[Tbl_AutoFileds] (tableName表名,fieldName字段名,dataType数据类型,length长度 isnull 是否允许为n ...
- 正弦 sin 余弦 cos
正弦 以下概念需掌握 直角,锐角 sinA = 对边 / 斜边 性質 奇偶性 奇 定義域 (-∞,∞) 到達域 [-1,1] 周期 2π 在數學中,正弦是一種週期函數,是三角函数的一種.它的定义域是整 ...
- UNITY3D的变量初始化问题
大部分是代码声明变量,而变量的初始化值在编辑器中指定,不在代码中直接指定 奇怪! 而且只有Public的才能在编辑器中出现,如果你改为Private就不再显示,如果你再改回PUBLIC,原先指定的初化 ...
- 多个mysql解决方法
有的时候工作需要之类的,需要多个mysql数据库,而默认开启的服务为c盘windows里的my.ini 1.设置好要用的my.ini2.关闭当前的mysql数据库服务3.将my.ini拷贝到C:\WI ...
- GNU make简要介绍①指定变量、自动推导规则、清除工作目录过程文件
Makefile简介 在执行make之前需要一个命名为Makefile的特殊文件来告诉make需要做些什么. 当使用 make 工具进行编译时,工程中以下几种文件在执行 make 时将会被编译 (重新 ...