就是如果(a - b) % m == 0,那么 a 和 b 模 m 同余
假设 a = 26, b = 20, a - b = 6
显然m可以取 1,2,3,6
带进去验证成立
一般来说对m的约束是 m >= 2,所以m可以取2,3,6。(m = 1是同余是显然的)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 9;
int n, m, k;
void work()
{
ll a, b;
cin >> a >> b;
if(a > b) swap(a, b);
if(a == 1 && b == 1) cout << -1 << " " << -1 << endl;
else if(b - a == 1) cout << -1 << " " << -1 << endl;
else if(a == b) cout << 2 << " " << a << endl;
else
{
ll c = b - a;
for(int i = 2; i * i <= b - a; ++i)
if(b % i == a % i){
c = i; break;
}
cout << c << " " << b - a << endl;
}
}
int main()
{
int T;cin >> T;while(T--)
work();
return 0;
}