本文主要是介绍pku 1870 bee breeding,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
想到坐标的转换是重点。参看pku 2265 bee maja
#include < iostream >
#include < cmath >
#include < algorithm >
using namespace std;
// 1 is inlayer 0
// east ,west ,...
void getPos( int & x, int & y, int l)
... {
int type,temp,k;
k = ceil((-1+sqrt(1.0+4.0/3.0*l))/2.0);
l-=1+3*k*(k-1);
type=l/k;//确定在哪个方位
temp=l%k;//确定是这个方位的第几个元素
if(type==1) ...{
x=k;y=-temp;
} else if(type==2) ...{
x=k-temp;y=-k;
} else if(type==3) ...{
x=-temp;y=-k+temp;
} else if(type==4) ...{
x=-k;y=temp;
} else if(type==5) ...{
x=-k+temp;y=k;
} else if(type==0) ...{
x=temp;y=k-temp;
if(l==0) y--;
}
return;
}
int main()
... {
int a,b;
int x1,y1,x2,y2;
while (scanf("%d%d",&a,&b)!=EOF)
...{
if (a==0)break;
printf("The distance between cells %d and %d is ",a,b);
getPos(x1,y1,a);
getPos(x2,y2,b);
x2-=x1;
y2-=y1;
if (x2*y2>0)
printf("%d",abs(x2+y2));
else
printf("%d",max(abs(x2),abs(y2)));
printf(". ");
}
}
#include < cmath >
#include < algorithm >
using namespace std;
// 1 is inlayer 0
// east ,west ,...
void getPos( int & x, int & y, int l)
... {
int type,temp,k;
k = ceil((-1+sqrt(1.0+4.0/3.0*l))/2.0);
l-=1+3*k*(k-1);
type=l/k;//确定在哪个方位
temp=l%k;//确定是这个方位的第几个元素
if(type==1) ...{
x=k;y=-temp;
} else if(type==2) ...{
x=k-temp;y=-k;
} else if(type==3) ...{
x=-temp;y=-k+temp;
} else if(type==4) ...{
x=-k;y=temp;
} else if(type==5) ...{
x=-k+temp;y=k;
} else if(type==0) ...{
x=temp;y=k-temp;
if(l==0) y--;
}
return;
}
int main()
... {
int a,b;
int x1,y1,x2,y2;
while (scanf("%d%d",&a,&b)!=EOF)
...{
if (a==0)break;
printf("The distance between cells %d and %d is ",a,b);
getPos(x1,y1,a);
getPos(x2,y2,b);
x2-=x1;
y2-=y1;
if (x2*y2>0)
printf("%d",abs(x2+y2));
else
printf("%d",max(abs(x2),abs(y2)));
printf(". ");
}
}
这篇关于pku 1870 bee breeding的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!