codeforces-Ed78-B

codeforces-Ed78-B

七月 08, 2020

B. A and B

题意
给出两个数 a b
第i次操作可以给a+=i或给b+=i;
问最少几次操作使得a==b

启发点:因为对于两数和a’+b’=sum一定等于a+b+(n+1)*n/2
a’= =b’所以sum%2= =0 且有a’>=a b’>=b
循环累加i判断是否成立即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# include <bits/stdc++.h>

using namespace std;
typedef long long ll;
int main(){
int t;cin>>t;
while(t--){
ll a,b;cin>>a>>b;
ll sum=a+b;ll i=1;
while(sum%2!=0||sum/2<a||sum/2<b){
sum+=i;
i++;
}
cout<<i-1<<endl;
}
}