当前位置: 代码迷 >> 综合 >> CF1603B Moderate Modular Mode
  详细解决方案

CF1603B Moderate Modular Mode

热度:116   发布时间:2023-10-14 00:30:37.0

原题链接

题意

CF1603B Moderate Modular Mode

思路

找规律,发现
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;
}

总结

这种题就是要多练才可以推出正解。

  相关解决方案