//
// main.cpp
// U276692 「DROI」Round 2 构造与取模
//
// Created by SkyWave Sun on 2023/5/28.
//
#include <iostream>
using namespace std;
void solve() {
long long n, k;
scanf("%lld%lld",&n,&k);
if (n < k) {
puts("-1");
return;
}
long long tmp = n - k;
for (long long i = 1; i * i * i <= n - k; ++i){
if (tmp % i == 0) {
long long y = tmp / i;
long long x = n - y;
if (x >= 0 && y > 0 && x % y == k) {
printf("%lld %lld\n", x, y);
return;
}
}
}
puts("-1");
}
int main(int argc, const char * argv[]) {
int T;
scanf("%d",&T);
while (T--) {
solve();
}
return 0;
}
赛时枚举因数60分,冥思苦想时想到了atc的某道传统艺能题只要枚举到立方根,反正是IOI赛制,遂就试试枚举到立方根,发现过了。数论不好的我提问,这个东西有正确性吗?