F - Prime Path POJ - 3126

题意修改一个四位数质数的某一位,使得该质数又变为一个质数,求从当前数变为目标质数的最少变化次数。

bfs枚举每一位的每种变化

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int s, e;
int pri[10010], vis[10010];bool isprime(int x)  {if(x <= 1) return 0;if(x == 2 || x == 3) return 1;if(x % 2 == 0) return 0;for(int i = 3; i*i <= x; i++) {if(x % i == 0) return 0;}return 1;
}struct P {int num, step;
};int bfs() {P start;start.num = s; start.step = 0;vis[s] = 1;queue<P> Q;Q.push(start);while(!Q.empty()) {P now = Q.front(); Q.pop();if(now.num == e) return now.step;P tmp = now; tmp.step = now.step + 1;for(int i = 1; i <= 4; i++) {int j = i, pre = now.num, mod = 0, ten = 1, certain; // pre 是要改变的数字之前的数字, certain是要改变的数字, mod是要改变的数字之后的数字 while(j--) {if(j != 0) {ten *= 10;}certain = pre % 10;pre /= 10;}mod = now.num % ten;for(int k = 0; k < 10; k++) {if(i == 4 && k == 0) continue; // 首位不能为0 int new_num = pre*ten*10 + k*ten + mod; if(k == certain) continue;if(new_num == e) {return tmp.step;}if(pri[new_num] && !vis[new_num]) {vis[new_num] = 1;tmp.num = new_num;Q.push(tmp);}}}}return -1;
}int main() {//  freopen("test.in", "r", stdin);for(int i = 1; i < 10000; i++){ // 处理出 1 ~ 10000 之间的素数 if(isprime(i)) pri[i] = 1;else pri[i] = 0;}int T;scanf("%d", &T);while(T--) {memset(vis, 0, sizeof(vis));int ans = 0;scanf("%d%d", &s, &e);ans = bfs();if(ans == -1) {printf("Impossible\n");}else printf("%d\n", ans);}return 0;
}

F - Prime Path POJ - 3126相关推荐

  1. Prime Path POJ - 3126

    题目链接:Prime Path POJ - 3126 =================================================== Prime Path Time Limit ...

  2. Mathematics:Prime Path(POJ 3126)

     素数通道 题目大意:给定两个素数a,b,要你找到一种变换,使得每次变换都是素数,如果能从a变换到b,则输出最小步数,否则输出Impossible 水题,因为要求最小步数,所以我们只需要找到到每个素数 ...

  3. F - Prime Path

    题目描述 The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

  4. POJ - 3126 - Prime Path(BFS)

    Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...

  5. POJ 3126 - Prime Path + Python(BFS)

    ()原题链接: # 原题:POJ 3126 - Prime Path | 眈眈探求 # 解题思路:https://blog.csdn.net/LYHVOYAGE/article/details/182 ...

  6. POJ 3126 Prime Path(BFS 数字处理)

    意甲冠军  给你两个4位质数a, b  每次你可以改变a个位数,但仍然需要素数的变化  乞讨a有多少次的能力,至少修改成b 基础的bfs  注意数的处理即可了  出队一个数  然后入队全部能够由这个素 ...

  7. POJ 3126 Prime Path(BFS + 素数打表)

    题意:给定两个四位素数, 从一个素数到另一个素数,最少用几步,可以一次更改四位中的任意一位,但每次改变都只能是素数. 解题思路:四位数每一位情况有十种情况0-9, 四位共有40种情况, 枚举40种情况 ...

  8. poj 3126 Prime Path

    看题目... 看解题报告... 敲.... 题意转自:優YoU  http://user.qzone.qq.com/289065406/blog/1303623014 大致题意: 给定两个四位素数a  ...

  9. Prime Path(bfs)广度优先搜索

    题目描述 The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...

最新文章

  1. log4j的配置参数
  2. pythonwhile循环怎么修改数据类型_python基础--数据类型循环
  3. C语言多文件编程基本格式
  4. loadrunner学习记录一
  5. python idle打不开_孩子,给你的Python安个家吧!
  6. 虚拟路由器冗余协议-VRRP
  7. 广告位管理系统---使用说明
  8. BZOJ2563: 阿狸和桃子的游戏 贪心
  9. kafka windows单机安装测试
  10. mvn执行编译时使用lib下的jar包
  11. fx2n4ad模块中文手册_特殊功能模块FX2N-4AD用户指南手册三菱FX2N-4AD手册 - 广州凌控...
  12. 大学生DW网页设计基础知识
  13. vue导出Excel表格(超级简洁)
  14. 人人接龙助手,三分钟为你的微信群创建打卡活动
  15. Behavior Designer 行为树中文版教程
  16. 【学习笔记】斯坦福大学公开课(机器学习) 之生成学习算法:朴素贝叶斯
  17. 安卓Activity的生命周期函数详解
  18. Spring MVC实现查找酒店用例
  19. 编译OpenCV4.4测试运行
  20. 杨百万:这么多年不倒 重要的是信奉落袋为安

热门文章

  1. 如何使用OpenCV实现图像均衡???
  2. 学习OpenGL ES之透明和混合
  3. Linux下分区、格式化、自动挂载
  4. linux驱动开发要知道的那些知识(三)------container_of,定时器 及系统调用
  5. Java NIO使用及原理分析(三)
  6. [Android]ViewSwitcher使用范例
  7. lgg6 android 9,【LGG6评测】18:9奇葩比例没采用骁龙835 LG G6解析_LG G6_手机评测-中关村在线...
  8. python检测端口是否被占用_Python_监测某一个端口是否被占用
  9. 【python教程入门学习】Pandas库下载和安装
  10. pcf8574c语言测试程序,PCF8563驱动程序(C语言版)