Problem Description
RC非常喜欢一个名叫"Lie Dice"的游戏,并立志要成为当中的牛人。后来他听说有一位成为"骰神"的世外高手,就来到了骰神的住所,想拜骰神为师。开始时骰神将他拒绝了,但在RC的死缠烂打之下,骰神终于心软,不过提出要经过一场入门考验。
骰神的考验是这样的:在骰神的园子里有一个N*M的矩形地,里面是N行M列的小方格。对每一行按从南到北的顺序由1-N编号,对每一列按从西到东的顺序由1-M编号,每个小方格用它的行列编号来表示,即(i,j)表示第i行第j列的方格。这样最西南的方格就是(1,1),最东北的方格就是(n,m)。
骰神在(1,1)的方格中放置了一颗骰子,其中点数1向上。骰子可以往东南西北四个方向滚动,滚动之后骰子就到了该方向的下一格,但同时点数1的朝向也可能会发生变化。如最开始将骰子往北滚动,骰子就到了(2,1)处,此时点数1向北。
可怜的RC想了很久,还是没有想出办法。他郁闷地往回走时,突然碰到一个乞丐。乞丐望了他两眼,惊异地说:"不得了了,不得了了。你有一道灵光从天灵盖中喷出,年纪轻轻就有一身投机的气质,真是百年难得一见的赌博奇才。若让你打开任督二脉,你还不会飞骰啊?今天看你我有缘,我这里有一本秘笈,就便宜点10块钱卖给你吧!"
RC定睛一看,这是一本名为《骰神秘笈》的方格簿。RC翻开第一页,上面赫然写着:"你还在为通不过滚骰考验而困扰吗?来吧,只要拨打以下热线号码,包你轻松过关!"
RC拨完那个号码后,你的电话突然响起,原来那是你的号码。那么,你能帮帮他吗?
Input
输入有多组数据。每组数据仅有一行,当中有两个正整数X和Y,表示要将骰子滚到(X,Y)处,且点数1向上。X=Y=0时表示输入结束。
1<=X,Y<=100000000
Output
对于每组数据输出一行,仅包含一个整数,即最少要滚动的次数。
Sample Input
1 1
1 2
1 5
0 0
Sample Output
0
3
4
#include<iostream>
#include<cstdio>
using namespace std;
void swap(int *a,int *b)
{
int tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
//freopen("b.txt","r",stdin);
int x, y;
while(cin >> x >> y, x || y)
{
if(x > y)
swap(&x,&y);
x --, y --;
if(x == 0)
{
if(y % 4 == 0)
cout << y << endl;
else cout << y + 2 << endl;
}
else if(x == 1)
{
if(y == 1) cout << x + y + 4 << endl;
else if(y % 4 == 0) cout << x + y << endl;
else cout << x + y + 2 << endl;
}
else cout << x + y << endl;
}
return 0;
}
















