东大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 是回文质数. 写一个程序来找 ...
随机推荐
- Android 项目中文件夹的说明与作用(转)
(转自:http://blog.csdn.net/goodshot/article/details/11529731) Android 项目中文件夹的作用 1. src:存放所有的*.java源程序. ...
- python中if __name__ == "__main__":用法解析
__name__: __name__作为模块的内置属性,简单点说呢,就是.py文件的调用方式. __main__: 如果__name__等于"__main__"就表示是直接执行. ...
- Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.作为一个程序员,我们需要掌握其用法. 作为开源代码库以及版本控制系统,Github目前拥有140 ...
- [多图]Windows 10 Build 10565今推送:优化界面菜单 Cortana改进
酷站网软:此前的Windows Build 10558并没有向公众发布,而是直到近日才向Fast Ring用户推送了更多功能和改进的Build 10565版.除之前版本上的加入了Messaging.E ...
- single单例模式
单例模式:多用于数据库连接,保证数据库只连接一次,避免重复连接.因为多次打开服务器会造成服务器负担,运行速度会减慢. 以下是一个连接数据库的单例模式: <?php class db_mysql{ ...
- uva10167 Birthday Cake
Lucy and Lily are twins. Today is their birthday. Mother buys a birthday cake for them. Now we put t ...
- 转载 Appstore 上传被拒原因及解释
原 apps被拒绝的各种理由以及翻译 1. Terms and conditions(法律与条款) 2. Functionality(功能) 3. Metadata (name, descriptio ...
- oracle的substr函数的用法
oracle的substr函数的用法 取得字符串中指定起始位置和长度的字符串 substr( string, start_position, [ length ] ) 如: substr( ...
- K910 升级Android 4.4.2可用的Google Service Framework
把手机换成了K910, 看上的是骁龙800的cpu和电子罗盘... 比V987是升级一大截了. 花了一个晚上加半个上午的时间终于搞定了GoogleServiceFramework, 试了大概四五个网上 ...
- 夯实基础之php学习-2提高篇
1,Jpgraph, 详见Php图形化jpgraph 2,文件系统 文件的操作步骤:打开文件->操作文件->关闭文件 打开文件fopen(filename,mode) 关闭文件fclose ...