3 条题解
-
2
考虑两种情况:
-
符号相同:
考虑经过操作后 会变成什么。:
操作1 操作2 可以看出只进行零次或一次操作后可以取到最小值。
所以答案为 $\min(\lvert a \rvert,\lvert b \rvert,\lvert a-b \rvert)$。
-
符号不同
答案为 。下面给出理由:
因为改变 的位置不会影响结果,所以设 为正数, 为负数。
注意到每次操作都会改变 或 的值,并且由于 和 异号,如果不断将绝对值较小的数加到绝对值较大的数上,就会不断减小两者的差值:
- 假如 ,我们执行 , 变小。
- 假如 ,我们执行 , 变小。
由于每次操作都使得较大绝对值的数减小,因此可以类比辗转相减法,这种操作一定会在若干次后使得其中一个数变为 0。
代码:
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ int a,b; cin>>a>>b; if((a<0&&b>0)||(a>0&&b<0)) cout<<0<<endl; else cout<<min({abs(a),abs(b),abs(a-b)})<<endl; } return 0; }
-
信息
- ID
- 56
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 3
- 标签
- 递交数
- 650
- 已通过
- 234
- 上传者