题目链接:

GT and numbers

Time Limit: 2000/1000 MS (Java/Others)

    Memory Limit: 65536/65536 K (Java/Others)

Problem Description
 
You are given two numbers N and M.

Every step you can get a new N in the way that multiply N by a factor of N.

Work out how many steps can N be equal to M at least.

If N can't be to M forever,print −1.

 
Input
 
In the first line there is a number T.T is the test number.

In the next T lines there are two numbers N and M.

T≤1000, 1≤N≤1000000,1≤M≤263.

Be careful to the range of M.

You'd better print the enter in the last line when you hack others.

You'd better not print space in the last of each line when you hack others.

 
Output
 
For each test case,output an answer.
 
Sample Input
 
3
1 1
1 2
2 4
 
Sample Output
 
0
-1
1
 
题意:
 
问一个数n,每次乘上它的一个因数,问最少多少次能变成m;
 
思路:
 
把n,m质因数分解,m如果能由n得来,那么分解后m的质因数与n的质因数相同,且每个质因数的个数不少于n;否则就不能由n得到;
最少的步数当然是对于每个质因数,贪心的去得到m中对应的质因数个数,最后答案就是所有质因数的个数变成m要求的个数的最大的那个;已经智障到不会写scanf了;
 
AC代码:
 
  1. //#include <bits/stdc++.h>
  2.  
  3. #include <iostream>
  4. #include <queue>
  5. #include <cmath>
  6. #include <map>
  7. #include <cstring>
  8. #include <algorithm>
  9. #include <cstdio>
  10. using namespace std;
  11. #define Riep(n) for(int i=1;i<=n;i++)
  12. #define Riop(n) for(int i=0;i<n;i++)
  13. #define Rjep(n) for(int j=1;j<=n;j++)
  14. #define Rjop(n) for(int j=0;j<n;j++)
  15. #define mst(ss,b) memset(ss,b,sizeof(ss));
  16. typedef unsigned long long LL;
  17. const LL mod=1e9+;
  18. const double PI=acos(-1.0);
  19. const int inf=0x3f3f3f3f;
  20. const int N=1e6+;
  21. template<class T> void read(T&num) {
  22. char CH; bool F=false;
  23. for(CH=getchar();CH<''||CH>'';F= CH=='-',CH=getchar());
  24. for(num=;CH>=''&&CH<='';num=num*+CH-'',CH=getchar());
  25. F && (num=-num);
  26. }
  27. int stk[], tp;
  28. template<class T> inline void print(T p) {
  29. if(!p) { puts(""); return; }
  30. while(p) stk[++ tp] = p%, p/=;
  31. while(tp) putchar(stk[tp--] + '');
  32. putchar('\n');
  33. }
  34. int prime[N];
  35. struct node
  36. {
  37. int a[],m;
  38. }po[N];
  39. void Init()
  40. {
  41. for(int i=;i<N;i++)
  42. {
  43. po[i].m=;
  44. }
  45. for(int i=;i<N;i++)
  46. {
  47. if(!prime[i])
  48. {
  49. po[i].a[po[i].m++]=i;
  50. for(int j=*i;j<N;j+=i)
  51. {
  52. po[j].a[po[j].m++]=i;
  53. prime[j]=;
  54. }
  55. }
  56. }
  57. }
  58. LL check(int x)
  59. {
  60. LL s=;
  61. for(int i=;i<=x;i++)
  62. {
  63. s*=;
  64. }
  65. return s;
  66. }
  67. int getans(int x,int y)
  68. {
  69. int l=,r=(int)(log(y/x+)/log(2.0))+;
  70. while(l<=r)
  71. {
  72. int mid=(l+r)>>;
  73. if(check(mid)*x>=y)r=mid-;
  74. else l=mid+;
  75. }
  76. return r+;
  77. }
  78. void solve(int n,LL m)
  79. {
  80. if(n==)
  81. {
  82. if(m==)printf("0\n");
  83. else printf("-1\n");
  84. }
  85. else
  86. {
  87. int ans=;
  88. int tempn=n;
  89. LL tempm=m;
  90. for(int i=;i<po[n].m;i++)
  91. {
  92. int num1=;
  93. while(tempn%po[n].a[i]==)
  94. {
  95. tempn/=po[n].a[i];
  96. num1++;
  97. }
  98. int num2=;
  99. while(tempm%po[n].a[i]==)
  100. {
  101. tempm/=po[n].a[i];
  102. num2++;
  103. }
  104. if(num2<num1)
  105. {
  106. printf("-1\n");
  107. return ;
  108. }
  109. ans=max(ans,getans(num1,num2));
  110. }
  111. if(tempm>)printf("-1\n");
  112. else printf("%d\n",ans);
  113. }
  114. }
  115. int main()
  116. {
  117. Init();
  118. int T;
  119. scanf("%d",&T);
  120. int n;
  121. LL m;
  122. while(T--)
  123. {
  124. read(n);
  125. scanf("%I64u",&m);
  126. solve(n,m);
  127. }
  128. return ;
  129. }

hdu-5505(数论)的更多相关文章

  1. hdu 5505(数论-gcd的应用)

    GT and numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  2. GCD and LCM HDU 4497 数论

    GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...

  3. HDU 4497 数论+组合数学

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4497 解题思路:将满足条件的一组x,z,y都除以G,得到x‘,y',z',满足条件gcd(x',y' ...

  4. HDU 5505 - BestCoder Round #60 - GT and numbers

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...

  5. hdu 4542 数论 + 约数个数相关 腾讯编程马拉松复赛

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4542 小明系列故事--未知剩余系 Time Limit: 500/200 MS (Java/Others) ...

  6. hdu 4961 数论?

    http://acm.hdu.edu.cn/showproblem.php?pid=4961 给定ai数组; 构造bi, k=max(j | 0<j<i,a j%ai=0), bi=ak; ...

  7. hdu 1664(数论+同余搜索+记录路径)

    Different Digits Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. hdu 3641 数论 二分求符合条件的最小值数学杂题

    http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...

  9. hdu 4059 数论+高次方求和+容斥原理

    http://acm.hdu.edu.cn/showproblem.php? pid=4059 现场赛中通过率挺高的一道题 可是容斥原理不怎么会.. 參考了http://blog.csdn.net/a ...

  10. hdu 5505 GT and numbers

    GT and numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

随机推荐

  1. Kafka学习记录

    1 Kafka的基本介绍 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.具有快速.可扩展.分布式.可复制等特点.Kafka与传 ...

  2. oracle 学习笔记--用户管理

    oracle 用户管理 创建用户(需要具有dba权限的用户) create user 用户名 identified by 密码 defaule tablespace users     //默认表空间 ...

  3. Nutch搜索引擎系列

    下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...

  4. Entity Framework 6 Code First +MVC5+MySql/Oracle使用过程中的几个问题

    1. namespace Snapsia.Web.Models { using System; using System.Data.Entity; using System.ComponentMode ...

  5. GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】

    http://blog.csdn.net/a3070173/archive/2008/11/20/3342062.aspx Dislace Mapping其实就是在顶点着色器中 对顶点进行置换偏移,经 ...

  6. openlayers3 在地图上叠加WFS查询矢量图层

    随着终端设备计算能力的加强,用户在使用地图的时候也须要越来越多的交互效果. 比方如今非常火的室内导航,为了获得好的用户体验,就须要当用户单击某一商店的时候该商店的颜色能对应的变化.这就须要叠加矢量图层 ...

  7. busybox配置telnetd

    busybox配置telnetd的问题 进入busybox源码文件夹,选择telnet,telnetd.后确保在ramdisk的sbin文件夹下存在inetd和in.telnetd或telned.在r ...

  8. 识货的拿走:Android游戏框架解读之总体结构

    Android游戏开发的框架图无偿奉上.

  9. DB2数据库性能优化介绍

    DB2数据库性能优化介绍 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 前段时间,我从CSDN得到了这本书<DB2数据库性能调整和优化(第2版)& ...

  10. ASP.NET项目从VS2008迁移至VS2010或2012编译不过的问题

    这次将一个VS2008编写的网站迁移至VS2010或者2012下都编译不通过,统统报相同的错误:缺少System.Linq引用,缺少System.Xml.Linq引用,但是明明有引用啊,引用DLL我都 ...