//hdu 1030 Delta-wave (建坐标找最小步骤路径)
#include<iostream>
#include<cstdio>
#include<string.h>
#include<math.h>
using namespace std;
struct node
{
int mid,right,left;//mid就是正的层坐标,right就是右的坐标,left就是左的坐标
};
node coordinate(int n)
{
node temp;
int nsq=sqrt(n);
if(nsq*nsq==n)
{
temp.mid=nsq;
temp.right=1;
temp.left=nsq;
return temp;
}
else
{
temp.mid=nsq+1;
temp.right=1+(((nsq+1)*(nsq+1))-n)/2;
temp.left=1+(n-((nsq*nsq)+1))/2;
}
return temp;
}
int jAbs(int a,int b)
{
if(a>b)
return a-b;
return b-a;
}
int main()
{
int n1,n2;
node nd1,nd2;
while(cin>>n1>>n2)
{
nd1=coordinate(n1);
nd2=coordinate(n2);
cout<<jAbs(nd1.mid,nd2.mid)+jAbs(nd1.right,nd2.right)+jAbs(nd1.left,nd2.left)<<endl;
}
return 0;
}
/hdu 1030 Delta-wave (建坐标找最小步骤路径)
最新推荐文章于 2018-08-13 20:17:58 发布