给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取。

  

  本题大意:

    给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数。要求变换过程中的数也都是素数。

  本题思路:

    求最小步数,用BFS,判断素数,用欧拉筛打表。

  参考代码:

 #include <cstdio>
#include <queue>
#include <map>
#include <cstring>
using namespace std; int star, finish, ans, total = ;
const int maxn = + ;
bool isprime[maxn];
bool isvisited[maxn];
int prime[]; struct node{
int cur, step;
} now, Next; void get_prime() {//欧拉筛打表
memset(isprime, false, sizeof(isprime));
for(int i = ; i < maxn; i ++) {
if(!isprime[i])
prime[total ++] = i;
for(int j = ; j < total; j ++) {
if(prime[j] * i > maxn) break;
isprime[prime[j] * i] = true;
if(i % prime[j] == ) break;
}
}
} int bfs() {
queue <node> Q;
isvisited[star] = true;
now.cur = star;
now.step = ;
Q.push(now);
while(!Q.empty()) {
char num[];
now = Q.front();
Q.pop();
if(now.cur == finish) return now.step;
for(int i = ; i < ; i ++) {
sprintf(num, "%d", now.cur);
for(int j = ; j < ; j ++) {
if(j == && i == ) continue;
if(i == )
Next.cur = j * + (num[] - '') * + (num[] - '') * + (num[] - '');
else if(i == )
Next.cur = j * + (num[] - '') * +(num[] - '') * + (num[] - '');
else if(i == )
Next.cur = j * + (num[] - '') * + (num[] - '') * + (num[] - '');
else if(i == )
Next.cur = j + (num[] - '') * + (num[] - '') * + (num[] - '') * ;
if(!isprime[Next.cur] && !isvisited[Next.cur]) {
Next.step = now.step + ;
isvisited[Next.cur] = ;
Q.push(Next);
}
}
}
}
return -;
} int main () {
memset(isvisited, false, sizeof(isvisited));
get_prime();
int t;
scanf("%d", &t);
while(t --) {
memset(isvisited, false, sizeof(isvisited));
scanf("%d %d", &star, &finish);
ans = bfs();
if(ans == -) printf("Impossible\n");
else printf("%d\n", ans);
}
return ;
}

POJ-3126.PrimePath(欧拉筛素数打表 + BFS)的更多相关文章

  1. Poj 2478-Farey Sequence 欧拉函数,素数,线性筛

    Farey Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14291   Accepted: 5647 D ...

  2. 洛谷 P3383 【模板】线性筛素数-线性筛素数(欧拉筛素数)O(n)基础题贴个板子备忘

    P3383 [模板]线性筛素数 题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范 ...

  3. Sum of Consecutive Prime Numbers POJ - 2739 线性欧拉筛(线性欧拉筛证明)

    题意:给一个数 可以写出多少种  连续素数的合 思路:直接线性筛 筛素数 暴力找就行   (素数到n/2就可以停下了,优化一个常数) 其中:线性筛的证明参考:https://blog.csdn.net ...

  4. Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想

    题意 哥德巴赫猜想:任一大于2的数都可以分为两个质数之和 给一个n 分成两个质数之和 线行筛打表即可 可以拿一个数组当桶标记一下a[i]  i这个数是不是素数  在线性筛后面加个装桶循环即可 #inc ...

  5. poj 2480 Longge's problem 欧拉函数+素数打表

    Longge's problem   Description Longge is good at mathematics and he likes to think about hard mathem ...

  6. Dirichlet's Theorem on Arithmetic Progressions POJ - 3006 线性欧拉筛

    题意 给出a d n    给出数列 a,a+d,a+2d,a+3d......a+kd 问第n个数是几 保证答案不溢出 直接线性筛模拟即可 #include<cstdio> #inclu ...

  7. [bzoj3308]九月的咖啡店_欧拉筛素数_费用流

    bzoj-3308 九月的咖啡店 题目大意:深绘里在九份开了一家咖啡让,如何调配咖啡民了她每天的头等大事我们假设她有N种原料,第i种原料编号为i,调配一杯咖啡则需要在这里若干种兑在一起.不过有些原料不 ...

  8. [CF261E]Maxim and Calculator_搜索_欧拉筛素数_动态规划

    Maxim and Calculator 题目链接:https://www.luogu.org/problem/CF261E 数据范围:略. 题解: 考试的时候只会暴力,学弟太强了$\%\%\% Or ...

  9. POJ 3126 Prime Path (bfs+欧拉线性素数筛)

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

随机推荐

  1. Mybatis:通过MapperScannerConfigurer进行mapper扫描

    在applicationContext.xml里配置的

  2. 1.深入分析_NIO性能分析

    首先还是看一个用3中方式copy文件的测试Demo 分别是:普通Stream文件copy,BuffferedStream进行Copy 和Channel(nio)进行文件Copy的代码和性能测试报告: ...

  3. java多态和继承

    继承定义:子类继承父类的特征和行为,使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 多态定义看了很多,都觉得不够贴切,后来在一个同学的笔记中看到了如下的定义觉得很 ...

  4. delphi 控制音量 静音的类

    delphi 控制音量 静音的类 unit ttSound; interface uses winapi.windows, winapi.Messages; type SimpleSoundContr ...

  5. Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

    JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升           ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+Boots ...

  6. 企业微信二次开发之-如何获取secret序列号

    第一步:登录JEEWX后台,配置微信企业号账号信息(企业号.企业号应用) [1].配置企业微信信息 参数对应位置参考如下: [2].配置应用信息 必须四字段: 第二步: 登录企业微信后台,配置企业号应 ...

  7. css:长度距离的一个计算函数calc

    .calc-example{ width: calc(100% - 100px);} 可用于宽度,高度,margin,padding等长度或距离的计算 减号两边必须留一个空格

  8. THE BOX MODEL

    Review In this lesson, we covered the four properties of the box model: height and width, padding, b ...

  9. java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor

    Hibernate4.x与spring3.x整合,有关事务的处理,用Junit4测试,出现org.springframework.beans.factory.BeanCreationException ...

  10. 常用dos命令和windows系统快捷键

    一.dos命令[重难点]1.OS——操作系统2.如何进入dos窗口?——P111 开始——程序——运行——输入cmd3.常用的dos操作命令 3.1 返回上一级 cd.. 3.2 返回到根目录 cd\ ...