题目链接:
题目大意:
给定两个偶数,求出满足n%x=y%n的n
思路:
x>y时 n=x+y即可
x<=y时 n一定满足 x<=n<=y
证明:
如果n<x n%x=n,y%n<n 不满足
如果n>y n%x<x,y%n=y>x 不满足
对于区间【x,y】如何确定n的值
参考大佬的思路,一个形象化的解释
如图你处在原点,每次可移动x长度,然后可以到达p=y-y%x.因为x,y都是偶数,ymodx也是偶数。p可以两次移动(ymodx)/2距离到达y
n=y-(ymodx)/2,即为所求答案
n%x=(ymodx)/2
y%n=(ymodx)/2
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
void solve()
{
int x,y,n;
cin>>x>>y;
if(x>y) cout<<x+y<<'\n';
else cout<<y-y%x/2<<'\n';
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t;
cin>>t;
while(t--) solve();
}