贪心思想,锻炼基本运算能力。
坐标采取中轴,水平;这样很好做
#include <iostream> #include <cmath> using namespace std; #define ABS(a) (a>0?a:-a) int main(){ int n,m; int fn,fm; int xn,xm; while(cin>>n>>m){ fn=ceil(sqrt(n)); fm=ceil(sqrt(m)); xn=n-(fn-1)*(fn-1); xm=m-(fm-1)*(fm-1); if(fn>fm||(fn==fm&&xm%2<xn%2)){ fn^=fm^=fn^=fm; xn^=xm^=xn^=xm; } int mn=fn+1; int mm=fm+1; int dif=ABS(((xn-mn)-(xm-mm))); if(dif<=(fm-fn-1)){ cout<<(fm-fn-1)*2+(xn%2?0:1)+(xm%2?1:0)+1<<endl; } else{ cout<<(fm-fn-1)+ABS(dif)+1<<endl; } } }