1603B - Moderate Modular Mode(数论)

1603B - Moderate Modular Mode


题目:有两个偶数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();
	}
}

上一篇:threejs 学习之射线的使用


下一篇:x3d:了解x3dom