您的位置:首页 > 其它

hdoj 1030 Delta-wave(3坐标)

2017-05-27 16:54 375 查看
观察题目给的图,你会发现可以用3个坐标值唯一确定一个点,这3个坐标值如图:



(图侵删。。。)而且在进一步观察下,你会发现两个点的最短距离就是两个点对应坐标差的绝对值之和。

所以问题就简单啦

#include<iostream>
#include<math.h>
using namespace std;
void loc(int a,int &x,int &y,int &z)
{
int b,spr,spl;
b=(int)sqrt(a);
if(b*b<a)x=b+1;
else x=b;
spr=x*x-a;
y=spr/2+1;
spl=a-(x-1)*(x-1)-1;
z=spl/2+1;
}
int main()
{
int n,m,x1,y1,z1,x2,y2,z2,least;
while(cin>>m>>n)
{
loc(m,x1,y1,z1);
loc(n,x2,y2,z2);
least=abs(x1-x2)+abs(y1-y2)+abs(z1-z2);
cout<<least<<endl;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: