Description

In this problem, you are given an integer number s. You can transform any integer number A to another integer number B by adding x to A. This x is an integer number which is a prime factor of A (please note that 1 and A are not being considered as a factor of A). Now, your task is to find the minimum number of transformations required to transform s to another integer number t.

Input

Input starts with an integer T (≤ 500), denoting the number of test cases.

Each case contains two integers: s (1 ≤ s ≤ 100) and t (1 ≤ t ≤ 1000).

Output

For each case, print the case number and the minimum number of transformations needed. If it's impossible, then print -1.

Sample Input

2

6 12

6 13

Sample Output

Case 1: 2

Case 2: -1

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include <queue>
  6. #include <cmath>
  7. using namespace std;
  8. #define MAX 0x3f3f3f3f
  9. typedef struct{
  10. int step;
  11. int now;
  12. }Node;
  13. int s, t;
  14. bool prime[1010];
  15. int marks[1001];
  16. int BFS(){
  17. queue<Node> q;
  18. Node start;
  19. start.now = s;
  20. start.step = 0;
  21. q.push( start );
  22. memset( marks, 0x3f, sizeof( marks ) );
  23. int ans = MAX;
  24. while( !q.empty() ){
  25. Node n = q.front();
  26. q.pop();
  27. if( n.now == t ){
  28. ans = min( ans, n.step );
  29. continue;
  30. }
  31. for( int i = 2; i < n.now; i++ ){
  32. if( n.now % i != 0 || !prime[i] ){
  33. continue;
  34. }
  35. if( n.now + i > t ){
  36. continue;
  37. }
  38. if( marks[n.now+i] > n.step + 1 ){
  39. Node temp;
  40. temp.now = n.now + i;
  41. temp.step = n.step + 1;
  42. marks[n.now+i] = temp.step;
  43. q.push( temp );
  44. }
  45. }
  46. }
  47. if( ans < MAX ){
  48. return ans;
  49. }
  50. return -1;
  51. }
  52. int main(){
  53. int T, Case = 1;
  54. memset( prime, true, sizeof( prime ) );
  55. for( int i = 2; i <= 1000; i++ ){
  56. for( int j = 2; i * j <= 1000; j++ ){
  57. prime[i*j] = false;
  58. }
  59. }
  60. cin >> T;
  61. while( T-- ){
  62. cin >> s >> t;
  63. cout << "Case " << Case++ << ": " << BFS() << endl;
  64. }
  65. return 0;
  66. }

LightOJ 1141 Program E的更多相关文章

  1. LightOJ 1141 Number Transformation

    Number Transformation In this problem, you are given an integer number s. You can transform any inte ...

  2. ****ural 1141. RSA Attack(RSA加密,扩展欧几里得算法)

    1141. RSA Attack Time limit: 1.0 secondMemory limit: 64 MB The RSA problem is the following: given a ...

  3. LightOj:1030-Discovering Gold(期望dp模板)

    传送门:http://www.lightoj.com/volume_showproblem.php?problem=1030 Discovering Gold Time Limit: 2 second ...

  4. 九度OJ 1141:Financial Management (财务管理) (平均数)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:939 解决:489 题目描述: Larry graduated this year and finally has a job. He's ...

  5. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  6. Solved: “Cannot execute a program. The command being executed was \roslyn\csc.exe”

    When you publish your ASP.NET project to a hosting account such as GoDaddy, you may run into the iss ...

  7. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  8. 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...

    在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...

  9. c中使用gets() 提示warning: this program uses gets(), which is unsafe.

    今天在C代码中使用gets()时提示“warning: this program uses gets(), which is unsafe.”,然后这个程序还能运行,无聊的我开始查阅资料,为啥gets ...

随机推荐

  1. 转 java 类 单例

    转 单例概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例.饿汉式单例.登记式单例三种. 单例模式有一下特点: 1.单例类只能有一个实例. 2.单例类必须自己自己创建自己的唯一 ...

  2. iOS开发 判断代理以及代理方法是否有人遵循

    if (self.delegate && [self.delegate respondsToSelector:@selector]) { return YES; }

  3. C/C++大数库简介

    在网络安全技术领域中各种加密解密算法的软件实现上始终有一个共同的问题就是如何在普通的PC机上实现大数的运算.我们日常生活中所应用的PC机内部字长多是32位或64位,但是在各种加密解密的算法中为了达到一 ...

  4. 图像处理JPEGCodec类错误问题 毕业设计遇到的问题

     图像处理JPEGCodec类已经从Jdk1.7移除 2014-06-16 20:01:26 分类: 架构设计与优化 著名测试工具jira在使用图像处理JPEGCodec类会报告以下信息: 我是这样用 ...

  5. 【CITE】5个最优秀的Java和C#代码转换工具

    毋庸置疑,Java是一门最受欢迎而且使用最广泛的编程语言,目前有超过9百万的Java开发者从事web服务的开发,Java以“编写一次,可在任何地方运行”而著称,同时这也是其大受欢迎的主要原因. 和Ja ...

  6. sass小总结

    一般有两种后缀  .sass和.scss,推荐使用后者. 写下自己对sass的理解 1.变量 $border-color:#c66; $border:1px solid $border-color; ...

  7. [bootstrap] 栅格系统和布局

    1.简介 栅格系统(grid systems),也称为“网格系统”,运用固定的格子设计版面布局,风格工整简洁.是从平面栅格系统演变而来. Bootstrap建立在12列栅格系统.布局.组件之上.以规则 ...

  8. html 标签总结

    <q>标签,短文本引用 例如“聪明秀出为之英,胆略过人为之雄.” <blockquote>标签,长文本引用 <blockquote>标签的解析是缩进样式. 没有HT ...

  9. python中range和xrange的区别

    1.range生成一个列表:xrange生成一个生成器 2.用法都差不多  

  10. oracle用户

    如果要了解oracle中用户信息,可以查询数据字典dba_users.在sql*plus中,使用system用户登录,查询语句如下: select username,account_status fr ...