您的位置:首页 > 其它

hdu 1030

2010-11-08 05:57 169 查看
贪心思想,锻炼基本运算能力。
坐标采取中轴,水平;这样很好做
#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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: