东大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.intent.action.MAIN与android.intent.category.LAUNCHER
android.intent.action.MAIN决定应用程序最先启动的Activity android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里 在网上看到 ...
- div在浏览器窗口中居中
让div相对于浏览器窗口居中. 方案一:纯粹使用CSS实现 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 基于JAVA的全国天气预报接口调用示例
step1:选择本文所示例的接口"全国天气预报接口" url:https://www.juhe.cn/docs/api/id/39/aid/87step2:每个接口都需要传入一个参 ...
- Manacher's algorithm: 最长回文子串算法
Manacher 算法是时间.空间复杂度都为 O(n) 的解决 Longest palindromic substring(最长回文子串)的算法.回文串是中心对称的串,比如 'abcba'.'abcc ...
- WinCE项目应用之虚拟仪器(VI)
虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试.测量和自动化的应用.虚拟测量仪器(VI)概念由美国国家仪器公司NI(National Instruments)提出,并引发了传 ...
- Codeforces 549D. Hear Features[贪心 英语]
D. Haar Features time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 第10章 同步设备I/O和异步设备I/O(1)_常见设备及CreateFile函数
10.1 打开和关闭设备 10.1.1 设备的定义——在Windows中可以与之进行通信的任何东西. (1)常见设备及用途 设备 用途 用来打开设备的函数 文件 永久存储任何数据 CreateFile ...
- TortoiseSVN status cache占用CPU高
进程占用CPU高 每次从SVN上更新资源时,电脑都会卡死,直到资源更新完.当要Commit资源时,SVN也会卡死资源管理器,如下图所示: 解决占用CPU高的问题 1.禁用图标缓存 2.排除路径和包含路 ...
- Unity Shader IDE — Sublime Text2
使用MonoDevelop写了一段时间的Shader代码,发现效率太低了,所以换用Sublime Text. 安装Sublime Text 1.下载 sublime Text2 官网:http://w ...
- java 23 - 1 设计模式之工厂方法模式
转载: JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)