题目:有两个偶数x,y,求n使得n%x=y%n。
题解:
1.当x>y时,(x+y)%x=y,y%(x+y)=y。
2.当x<=y时,y - ((y % x) / 2)表示 x小于y的最大倍数maxx,加上(y-maxx)/2。
例如:x=4,y=10 maxx=8,y-maxx/2=1;
因为(y-maxx)/2<x;y - ((y % x) / 2)%x=(y-maxx)/2
因为y和y - ((y % x) / 2)十分接近;y%n=y%【y - ((y % x) / 2)】=y-【y - ((y % x) / 2)】=(y-maxx)/2。
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
void solve() {
ll x, y, ans;
cin >> x >> y;
if (y >= x) ans = y - ((y % x) / 2);
else ans = x + y;
cout << ans << endl;
}
int main() {
int t;
cin >> t;
while (t--) {
solve();
}
}