东大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 是回文质数. 写一个程序来找 ...
随机推荐
- x01.os.17: 换心术
在 linux 中编译 linux, 于是 linux 便有了再生能力.这不同于自然界的缓慢进化,可用神速来形容.—— 和强大的 windows 相抗衡,便是证明! 我在 ubuntu 中的编译方法如 ...
- linux线程同步(4)-自旋锁
自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁!!! 自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁 ...
- Team Foundation Server 15 功能初探
1. 系统安装 1.1. 系统需求 新版的TFS的系统要求发生了很大的变化,主要包含: - 不再支持32位的操作系统,只支持64位操作系统 - 只支持SQL 2014和SQL Server 2016, ...
- git 学习使用总结三(远程仓库操作)
这篇文章仅供自己以后翻阅加深记忆,要系统的学习 git 教程(中文版),请移步到 liaoxuefeng.com 学习 git 教程部分. pull, fetch, clone, push, chec ...
- USB hacker Collection
This blog contains some ideas and tricks about USB hacking.
- ASP.NET执行模型之IIS服务器处理流程
之前在网上看过很多对这方面的讲解,但个人觉得看下来过于 "深奥",不容易理解,所以想用更简单的方式进行阐述,便于理解. 本次我们重点分析用户请求到页面呈现过程中Web服务器的处理过 ...
- 原生的强大DOM选择器querySelector
在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id ...
- 洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]
题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...
- POJ1014Dividing[多重背包可行性]
Dividing Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 68769 Accepted: 17955 Descri ...
- POJ1094[有向环 拓扑排序]
Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 33184 Accepted: 11 ...