题意:给你两个初始值a,b,然后你每次可以选择对其中一个数进行加1,2,3,4,5…的操作,问你最少需要多少步可以将两个初始值变为相等的数,我们我们可以用贪心的思维来做,先让小的尽量趋近于大的,当小的超过大的我们就要寻找两个数相等的充分必要的条件,假设我们将a加了总共x个,b加了总共y个,我们可以知道,a+x=b+y,假设一开始a>b则y-x=a-b,故(y+x-(a-b))能被2整除
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1005;
char s[maxn],t[maxn];
int nxt[maxn];
LL sum[100005];
int main()
{
sum[1]=1;
for(LL i=2;i<=100000;i++){
sum[i]=sum[i-1]+i;
}
//printf("%lld\n",sum[100000]);
int t;
cin>>t;
while(t--){
LL a,b;
cin>>a>>b;
LL ko=abs(a-b);
LL res=0;
for(LL i=0;i<=100000;i++){
if(sum[i]<ko)continue;
if((sum[i]-ko)%2==0){
res=i;
break;
}
}
printf("%lld\n",res);
//printf("%d %lld\n",p,res);
}
return 0;
}