这种题肯定不是硬算求的,我们来找一下ab与n和m之间的关系。
已知条件为a + b = n
和a % b = m
很显然,n应该是大于m的,如何证明呢?
根据a+b=n
推得,a最大为n-1,b最小就为1,此时m取最大,为(n-1) % 1 = n-1
,即m=n-1
因此m <= n
时才合法。
再来根据a % b = m
推关系。
a可以表示为a = kb + m
==>a + b = (k+1)b + m = n
而k >= 0
且b > m
,所以(k+1)b > m
,所以n > 2 * m
才合法。
故而,当m > n
或者n <= 2*m
时,不存在合法的a和b,输出-1.
反之,当m <= n
以及n > 2*m
时,存在合法的a和b,此时由于存在多个解,可令k=0,求得b = n - m
以及a = m
T = int(input())
for _ in range(T):
n, m = map(int, input().split())
if n <= 2 * m or n <= m:
print(-1)
else:
a, b = m, n-m
print(a, b)