hdoj 1030 Delta-wave(3坐标)

来源:互联网 发布:宿州影楼美工招聘兼职 编辑:程序博客网 时间:2024/06/06 12:28

观察题目给的图,你会发现可以用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;}