Prime Path



Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 463    Accepted Submission(s): 305



Problem Description

The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. 

— It is a matter of security to change such things every now and then, to keep the enemy in the dark.

— But look, I have chosen my number 1033 for good reasons. I am the Prime minister, you know!

—I know, so therefore your new number 8179 is also a prime. You will just have to paste four new digits over the four old ones on your office door.

— No, it’s not that simple. Suppose that I change the first digit to an 8, then the number will read 8033 which is not a prime!

— I see, being the prime minister you cannot stand having a non-prime number on your door even for a few seconds.

— Correct! So I must invent a scheme for going from 1033 to 8179 by a path of prime numbers where only one digit is changed from one prime to the next prime.





Now, the minister of finance, who had been eavesdropping, intervened.

— No unnecessary expenditure, please! I happen to know that the price of a digit is one pound.

— Hmm, in that case I need a computer program to minimize the cost. You don’t know some very cheap software gurus, do you?

—In fact, I do. You see, there is this programming contest going on. . .



Help the prime minister to find the cheapest prime path between any two given four-digit primes! The first digit must be nonzero, of course. Here is a solution in the case above.

1033

1733

3733

3739

3779

8779

8179

The cost of this solution is 6 pounds. Note that the digit 1 which got pasted over in step 2 can not be reused in the last step – a new 1 must be purchased.

 

Input

One line with a positive number: the number of test cases (at most 100). Then for each test case, one line with two numbers separated by a blank. Both numbers are four-digit primes (without leading zeros).



Output

One line for each case, either with a number stating the minimal cost or containing the word Impossible.

 

Sample Input

3

1033 8179

1373 8017

1033 1033

 

Sample Output

6

7

0

//这题是求从第一个数字变为第二个数字最少须要变几次,每一次仅仅能改变一个数字,而且要满足改变之后的仍然是素数

//从第一个字符到第四个字符相当于迷宫中的四个方向 接着每次改变从0-9注意开头第一个字符不能以0开头

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <queue>
  4. using namespace std;
  5. bool vis[9999]; //标记数组
  6. char start[10]; //起始数字用字符串处理
  7. int stop; //结尾数字
  8. struct Node
  9. {
  10. char tem[10];
  11. int step;
  12. };
  13. int prime(int n) //推断素数
  14. {
  15. for(int i=2;i*i<=n;i++)
  16. {
  17. if(n%i==0)
  18. return 0;
  19. }
  20. return 1;
  21. }
  22.  
  23. int bfs(char p[])
  24. {
  25. queue <Node> q;
  26. memset(vis,0,sizeof(vis));
  27. int temp;
  28. Node a;
  29. strcpy(a.tem,p);
  30. a.step=0;
  31. q.push(a);
  32. while(!q.empty())
  33. {
  34. Node b;
  35. b=q.front();
  36. q.pop();
  37. sscanf(b.tem,"%d",&temp); //利用sscanf函数将字符串转换为数字直接与结尾比較
  38. if(temp==stop)
  39. return b.step;
  40. vis[temp]=1;
  41. for(int i=0;i<4;i++)
  42. {
  43. char k;
  44. k=i!=0?'0':'1';
  45. for(;k<='9';k++)
  46. {
  47. Node c;
  48. c=b;
  49. c.tem[i]=k;
  50. sscanf(c.tem,"%d",&temp);
  51. if(prime(temp)&&!vis[temp]) //约束条件
  52. {
  53. c.step++;
  54. q.push(c);
  55. vis[temp]=1;
  56. }
  57. }
  58. }
  59. }
  60. return -1;
  61. }
  62. int main()
  63. {
  64. int t;
  65. scanf("%d",&t);
  66. getchar();
  67. while(t--)
  68. {
  69. scanf("%s%d",start,&stop);
  70. int flag=bfs(start);
  71. int flag=bfs(start);
  72. if(flag==-1)
  73. printf("Impossible\n");
  74. else
  75. printf("%d\n",flag);
  76. }
  77. return 0;
  78. }

HDU 1973的更多相关文章

  1. hdu 1973 Prime Path

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Description The ministers of the cabi ...

  2. [HDU 1973]--Prime Path(BFS,素数表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Time Limit: 5000/1000 MS (Java/Others ...

  3. hdu - 1195 Open the Lock (bfs) && hdu 1973 Prime Path (bfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1195 这道题虽然只是从四个数到四个数,但是状态很多,开始一直不知道怎么下手,关键就是如何划分这些状态,确保每一个 ...

  4. hdu 1973 bfs+素数判断

    题意:给出两个四位数,现要改变第一个数中的个,十,百,千位当中的一个数使它最终变成第二个数,要求这过程中形成的数是素数,问最少的步骤题解:素数筛选+bfsSample Input31033 81791 ...

  5. HDU - 1973 - Prime Path (BFS)

    Prime Path Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. 【BFS】hdu 1973 Prime Path

    题目描述: http://poj.org/problem?id=3414 中文大意: 使用两个锅,盛取定量水. 两个锅的容量和目标水量由用户输入. 允许的操作有:灌满锅.倒光锅内的水.一个锅中的水倒入 ...

  7. HDU1973 http://acm.hdu.edu.cn/showproblem.php?pid=1973

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<queue> #inc ...

  8. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

  9. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. 6.12---select

  2. C:\Windows\System32\drivers\etc\hosts文件显示

     attrib -s -h C:\Windows\System32\drivers\etc\hosts 

  3. Spark学习之数据读取与保存(4)

    Spark学习之数据读取与保存(4) 1. 文件格式 Spark对很多种文件格式的读取和保存方式都很简单. 如文本文件的非结构化的文件,如JSON的半结构化文件,如SequenceFile结构化文件. ...

  4. DatePickerDialog日期对话框以及回调函数的用法

    DatePickerDialog类的实例化需要用到回调接口,如下定义: android.app.DatePickerDialog.DatePickerDialog(Context context, O ...

  5. webSql的简单小例子

    初始化websql数据库的参数信息 var config = { name: 'my_plan', version: '', desc: 'manage my plans', size: 20 * 1 ...

  6. 3星|《投机教父尼德霍夫的股票投机术》:2003年的书了。作者97年投机大亏后在CNBC《金钱》栏目上的股市评论文章集。

    查资料作者在97年金融危机中大亏,之后在CNBC<金钱>栏目上跟人合写股市评论文章,本书是那些股评文章的集合.有资料说作者在08年有一次大亏. 从这些文章看,作者是比较冷静地看待股市的,不 ...

  7. arx 移动界面到一点

    AcDbViewTableRecord view; AcGePoint3d max = acdbHostApplicationServices()->workingDatabase()-> ...

  8. 17Oracle Database 维护

    Oracle Database 维护 备份 还原

  9. 牛客多校Round 4

    Soved:3 rank:133 A.Ternay String 欧拉降幂一下 但是反复求phi会超时 但mod是同一个就可以记忆化一下 #include <bits/stdc++.h> ...

  10. wpf 自定义Button按钮

    创建ButtonEx类 public class ButtonEx : Button { static ButtonEx() { DefaultStyleKeyProperty.OverrideMet ...