一道简单的分讨。
思路
可分成两种情况。
当 \(a\) 和 \(b\) 同号时:
这种情况,显而易见的是 \(|a-b|\) 的最小值必定是 \(|a|,|b|,|a-b|\) 之一。
当 \(a\) 和 \(b\) 异号时:
对 \((a,b)\) 执行欧几里得算法可以将一个变为 \(0\),另一个变为 \(\gcd(a,b)\)(忽略正负号)。
再将 \(0\) 变成两个数之和即可。
标明,以上来自 rui_er。
AC Code
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,t;
signed main(){
cin>>t;
while(t--){
cin>>a>>b;
if(a*b<0)cout<<0<<'\n';
else cout<<min(min(abs(a),abs(b)),abs(a-b))<<"\n";
}
return 0;
}
标签:Jason,int,题解,T2,cin,long,X4
From: https://www.cnblogs.com/aub-unluck-beginning/p/18540270