Problem - 1603B - Codeforces
帮助他找到一个整数n,使得1≤n≤2⋅1018,并且nmodx=ymodn。这里,amodb表示a除以b后的余数。如果有多个这样的整数,请输出任何一个。可以证明,在给定的约束条件下,这样的整数总是存在的。
输入
第一行包含一个整数t(1≤t≤105)--测试案例的数量。
每个测试案例的第一行也是唯一一行包含两个整数x和y(2≤x,y≤109,都是偶数)。
输出
对于每个测试用例,打印一个满足声明中提到的条件的单个整数n(1≤n≤2⋅1018)。如果有多个这样的整数,则输出任何一个。可以证明,在给定的约束条件下,这样的整数总是存在的。
例子
输入复制
4
4 8
4 2
420 420
69420 42068
输出拷贝
4
10
420
9969128
注意
在第一个测试案例中,4mod4=8mod4=0。
在第二个测试案例中,10mod4=2mod10=2。
在第三个测试案例中,420mod420=420mod420=0。
题解:
当a > b时不难发现 答案就是 a+b
当a <= b时
1.如果n < a,n % a = n,b % n < n,所以肯定不成立
2.如果n > b,n % a < a,b % n = b,所以肯定不成立
那么答案肯定再a~b之间
假设我们设答案为k*a
那么b % k*a = b - k*a
此时左边为k*a右边为b
答案不就应该是b - k*a的中间部分吗
b - k*a = b%a
#include
#include
#include
#include
#include
#include
#include