首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新人求解,一题目《《逃出黑洞》,求大牛指导。该如何处理

2012-04-23 
新人求解,一题目《《逃出黑洞》,求大牛指导。。Problem DescriptionMSQ同学最近太空版愤怒的小鸟玩的很Happy,已

新人求解,一题目《《逃出黑洞》,求大牛指导。。
Problem Description
MSQ同学最近太空版愤怒的小鸟玩的很Happy,已经全三星通关了。太空版的金蛋是一个黑洞,由于玩的过high,MSQ晚上梦见自己变成了小鸟,并且掉进了黑洞,可黑洞里不是什么好地方,现在MSQ同学需要你的帮助以最快的速度逃出黑洞!!
在黑洞内有一段线性空间...编号从1--200000,这段空间内引力场很弱使得MSQ同学可以自由移动,并且黑洞出口就在这段空间里,假设MSQ同学所在的位置为X,则MSQ可做如下运动:
1.从编号X处移动到X+1处;
2.从编号X处移动到X-1处;
3.利用单向虫洞从X处移动到2*X处,
每次行动耗时1分钟。
PS:无视描述内容科学性T_T Input
输入包含多组数据;
每组数据占一行,包含2个数N,K;
N表示MSQ同学所在的位置,K表示黑洞的出口;
其中1<=N<=100000,1<=K<=100000; Output
对于每组数据,输出MSQ逃出黑洞所需的最少时间 Sample Input
5 17
2 4
9 6
Sample Output
4
1
3



Hint:第一组数据,5-10-9-18-17 耗时4分钟
我的代码:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
 int n,k,a,b;
 while(cin>>n>>k)
 {
a=0;
if(n>k)
{
a=n-k;
cout<<a<<endl;
continue;
}
while(n<k)
{
n*=2;
a++;
}
b=a;
a+=k-1-(n/2);
if(n==k)
cout<<b<<endl;
else
{
b+=n-k-1;
b=a<b?a:b;
cout<<b<<endl;
}
 }
 return 0;
}
请问还有那种情况没有考虑。。。

[解决办法]
你的程序结果是 7 步,打错字了。

探讨
搞错,你的结果没7步

引用:
数据:
7 20 这种先退两步,然后 5*2=10,10*2=20,总共4步。

你的结果为 5 步

[解决办法]
楼主的程序逻辑有问题
输入5 ,9 输出1

热点排行