找规律, 分成三种排列,
这个规律不是太难找,但是表示,让我费了好大劲。。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <map>
#include <math.h>
#define LL long long
using namespace std;
const int maxn=100;
const int mod=1e9+7;
int a[maxn][maxn];
int main(){
int n,m;
while(~scanf("%d %d",&n,&m)){
int fn=(int)ceil(sqrt(n));
int fm=(int)ceil(sqrt(m));
int ln=((n-(fn-1)*(fn-1))+1)/2;
int lm=((m-(fm-1)*(fm-1))+1)/2;
int rn=(fn*fn-n)/2+1;
int rm=(fm*fm-m)/2+1;
printf("%d\n",(int)(fabs(fm-fn)+fabs(lm-ln)+fabs(rm-rn)));
}
return 0;
}