USACO Section1.5 Superprime Rib 解题报告
sprime解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
列出所有N位的超级素数。
所谓超级素数,即指其任意位前缀均为素数。例如7、73、733、7331均为素数,故而7331为超级素数。
【数据范围】
1<=N<=8
【输入样例】
4
【输出样例】
2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
逐位枚举+筛法+试除法。
这道题需要逐位枚举,具体过程描述如下:
1.定义0位的素数只有0(为了编程方便),调用函数go(0,0);
2.函数go(k,x)主体:x是k位的超级素数,枚举y=x*10+i(i=0~9),由筛法所得数组判断,若y为超级素数则调用go(k+1,y);
3.函数go(k,x)边界:当k==N时,输出x并return;
4.函数go(k,x)特判(置于边界判断后):当k==7&&N==8时,枚举y=x*10+i(i=0~9),由试除法判断,若y为超级素数则调用go(k+1,y);
值得一提的是,这里的特判可以大大提高运行效率,大约从2s缩减到0.2s,性价比很高。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
又是同样的问题,好奇怪!为什么100,000,000过不了?求解答啊!
我的处理方法是:令max=10,000,000,对于N==8的情况,在枚举到第8位的时候采用试除法判素数。这样便可以过了。
不过这样的处理倒是很不错的,因为这样一来筛法的时间变成了十分之一,而到8位可枚举的数已经少之又少,所以程序的运行效率提高极为显著。原来代码运行时间是2s+,现在只有不到0.2s了。学习了!
------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
/*
ID: icedrea1
PROB: sprime
LANG: C++
*/ #include <iostream>
#include <fstream>
#include <cmath>
using namespace std; const int maxd = ;
bool d[+maxd]; int N; bool isPrime(int x)
{
for(int i=;i<=sqrt(x);++i)
if(x%i==) return false;
return true;
} void go(int k,int x,ofstream &out)
{
if(k==N) { out<<x<<endl; return; }
x*=;
if(N== && k==)
{
for(int i=;i<=;++i)
if(isPrime(x+i)) go(k+,x+i,out);
return;
}
for(int i=;i<=;++i)
if(!d[x+i]) go(k+,x+i,out);
} int main()
{
ifstream in("sprime.in");
ofstream out("sprime.out"); d[]=d[]=true;
for(int i=;i<=;++i)
if(!d[i])
for(int j=i+i;j<=maxd;j+=i) d[j]=true; in>>N; go(,,out); in.close();
out.close();
return ;
}
USACO Section1.5 Superprime Rib 解题报告的更多相关文章
- USACO Section1.5 Prime Palindromes 解题报告
pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- USACO Section1.5 Number Triangles 解题报告
numtri解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- USACO Section1.4 Arithmetic Progressions 解题报告
ariprog解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...
- USACO Section1.3 Combination Lock 解题报告
combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section1.3 Prime Cryptarithm 解题报告
crypt1解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...
- USACO Section1.3 Barn Repair 解题报告
barn1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- USACO Section1.3 Mixing Milk 解题报告
milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...
- USACO Section1.2 Palindromic Squares 解题报告
palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...
- USACO Section1.2 Dual Palindromes 解题报告
dualpal解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...
随机推荐
- Spring MVC框架下提交Date数据无法在controller直接接收
主要有两步,controller中添加initBinder方法,再创建一个时间类型数据转换类就OK了. 1.在Controller中创建方法: // 相关包 import java.text.Date ...
- JS正则表达式(RegExp)
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...
- MySQL安装和简单操作
MySQL数据库安装与配置详解 MySQL的安装请参考下面这篇博客,讲述的非常详细,各种截图也很清晰.http://www.cnblogs.com/sshoub/p/4321640.html MySQ ...
- 轻量级HTTP服务器Nginx(Nginx性能优化技巧)
轻量级HTTP服务器Nginx(Nginx性能优化技巧) 文章来源于南非蚂蚁 一.编译安装过程优化 1.减小Nginx编译后的文件大小在编译Nginx时,默认以debug模式进行,而在debu ...
- centos6.5下编译安装FFmpeg
以下安装步骤基本来自官网,做个笔记以方便自己以后查看 http://trac.ffmpeg.org/wiki/CompilationGuide 1.安装依赖包 <span style=" ...
- css 伪类选择器制作登录框表单
使用伪类选择器 制作鼠标悬停时文本框出现橙色虚线边框 制作鼠标激活时出现背景颜色淡橙色 使用css制作文本框圆角矩形效果,制作文本框背景图片,及背景不重复效果 <!DOCTYPE html> ...
- vue中登录模块的插件封装
一个电商城的项目,场景是:在未登录的情况下点击收藏或者加入购物车等操作,执行一个方法如this.$login()来动态插入登录组件. 第一步:写好关于这个登录弹窗的单文件组件 loginBox.vue ...
- 泉五培训Day3
T1 家庭作业 题目 [问题描述] 小P为了能高效完成作业,规定每项作业花一个单位时间. 他的学习日从0时刻开始,有100000个单位时间.在任一时刻,他都可以选择编号1~N的N项作业中的任意一项作业 ...
- Django 入门案例开发
Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...
- pip更改国内源
国内源: 阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(dou ...