小青蛙Bob是一只没有理想的青蛙,游手好闲,真应了那句话,干啥啥不行,吃啥啥不剩,今天Bob想要前往另外一片荷叶上晒太阳,于是他盘算着如何才能跳到另外一片叶子上,现在假设荷叶在一直线上,每个荷叶都有一个编号从1到n,(n<=5*10^8),Bob有两种跳法,第一:跳到当前所处的荷叶编号的二倍处,第二:跳到当前所处的荷叶编号的三倍处 现在给出你Bob所处的荷叶编号和他想去的荷叶编号,请你告诉他最少需要多少步他才能到达他想去的荷叶。
输入格式:
第一行给出一个整数T(0<T<=100),表示有T组测试数据’ 而后T行,每行给出两个整数分别表示Bob现在所处的荷叶编号以及他想去的荷叶编号。
输出格式:
对于每个测试样例,输出一个整数表示他最少需要多少步他才能到达他想去的荷叶,如果无法到达,请输出-1.
输入样例:
2
2 12
2 36
输出样例:
2
3
思路:想要跳跃成功则终点与起点必须可以整除(因为跳跃过程只是增加整数倍)
错误原因:误把当前所处看作每次跳2或3
#include<stdio.h>int main(){int cnt=0;int N,a,b;scanf("%d",&N);while(N--){scanf("%d%d",&a,&b);if(b%a==0){int c=b/a;while(c%2==0){c/=2;cnt++;}while(c%3==0){c/=3;cnt++;}printf("%d\n",cnt);cnt=0;//切记计数器归0}else printf("-1\n");}}
如果觉得《7-1 小青蛙 跳跳跳》对你有帮助,请点赞、收藏,并留下你的观点哦!