小蝌蚪在一条长长的小溪散步,一不小心同妈妈走散了,如何才能找到妈妈呢?它自己的位置在X,妈妈的位置在Y。小蝌蚪踏上了寻找妈妈之旅:先向右边寻找,如果在X+1的位置没有找到妈妈,就返回原来地位置,然后向左边的位置找,如果到X-2的位置没有发现妈妈,再次折返到它原来的位置;再次向右边寻找,如果到X+4的位置都没有找到妈妈,它还是返回原来的位置,然后向左边的位置找,如果到X-8的位置还没有找到妈妈,还会折返回原来的位置X。如此往返,直到找到妈妈为止。求小蝌蚪找到妈妈时,走过了多少路程。
注意:X不一定要小于Y,即妈妈不一定在小蝌蚪的右边。但是无论妈妈在哪一边,小蝌蚪都是从右边开始找起,因为小蝌蚪不知道妈妈在哪里。
输入格式
两个整数X和Y
输出格式
一个整数,为小蝌蚪找到妈妈时走过的路程数。
输入/输出例子1
输入:
0 2
输出:
8
样例解释
无
#include<bits/stdc++.h>
using namespace std;
typedef long ll;
int main(){
int x,y;
cin>>x>>y;
ll s=0;
if(x==y)
s=0;
else
{
for(ll i=1,j=1;;i=2*i,j++)
{
if(x<y)
{
if(j%2==1 && x+i>=y)
{
s=s+y-x;
break;
}
}
else
{
if(j%2==0 && y+i>=x)
{
s=s+x-y;
break;
}
}
s=s+2*i;
}
}
cout<<s;
return 0;
}