1、刚开始漏了两个数相等的情况。做这种数学类杂题一定要注意边界条件。多考虑几次,多试几个测试数据再交。
2、思路就不讲了,看程序很容易理解。总之,就是在可能范围内尽量形成比较大的数字,越大越好。
#include <stdio.h>
#include <math.h>
int main(void)
{
int n,a,b,m,i,x,y,temp;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&a,&b);
m=abs(a-b);
i=0;
while(1)
{
x=i*(i+1);
y=(i+1)*(i+2);
if(m>=x&&m<y)
{
temp=m-x;
if(temp==0)
{printf("%d\n",2*i);break;}
if(temp>0&&temp<=i+1)
{printf("%d\n",2*i+1);break;}
if(temp>i+1)
{printf("%d\n",2*i+2);break;}
}
i++;
}
}
return 0;
}