原题链接
题意
思路
找规律,发现
当 x=yx = yx=y 时,输出xxx就行了
当 x>yx > yx>y 时,输出 x+yx + yx+y 就可以了,这样可以满足 (x+y)mody=b,bmod(a+b)=b(x + y)\ mod\ y = b,\ b\ mod\ (a\ +\ b) = b(x+y) mod y=b, b mod (a + b)=b.
当 x<yx<yx<y 时,输出 (y%x)/2+y/x?x(y\ \%\ x)\ /\ 2 + y\ /\ x\ *\ x(y % x) / 2+y / x ? x,我也不知道为啥,就是找出来的一个规律,不会证明,我想着大概是因为这样:因为都是偶数嘛,所以相除的余数肯定也是偶数所以可以除以二,这样可以使它们的结果刚好是余数的一半。
代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int t; cin >> t;while (t -- ){
int x, y;cin >> x >> y;if (x == y) cout << x << endl;else if (x > y) cout << x + y << endl;else if (x < y) cout << y % x / 2 + y / x * x << endl;}return 0;
}
总结
这种题就是要多练才可以推出正解。