/**********
author:chanjun2016
email:15755396353@163.com
***********/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define INF = 0x3f3f3f3f
const int maxn = 2e4;
struct Point{
int x,y;
Point(){
};
Point(int a,int b){
x = a;
y = b;
}
};
Point f[maxn + 10];
int num;
int d[][2] ={-1,0, -1,1, 0,1, 1,0, 1,-1, 0,-1};
void gen(int dir,int l){
++num;
//printf("%d\n", num);
while (l--){
f[num] = Point(f[num - 1].x + d[dir][0], f[num - 1].y + d[dir][1]);
++num;
}
--num;
}
void init(){
num = 2;
f[1] = Point(0,0);
f[2] = Point(1,-1);
for (int i = 1; i <= 60; ++i){
for (int j = 0; j < 4; ++j){
gen(j,i);
}
gen(4,i + 1);
gen(5,i);
}
}
int main(){
init();
int a,b;
while (scanf("%d%d",&a,&b),a + b > 0){
int x = f[a].x - f[b].x;
int y = f[a].y - f[b].y;
int ans;
if (x * y <= 0){
ans = max(abs(x),abs(y));
}else{
ans = abs(x) + abs(y);
}
//printf("%d %d\n",f[b].x,f[b].y);
printf("The distance between cells %d and %d is %d.\n", a,b,ans);
}
return 0;
}
uva808
最新推荐文章于 2020-08-05 06:58:39 发布