oj 1183
一般是签到题
观察这是个方程,并且 d d d 的范围很少,那么存在一种很暴力的方法,就算枚举 d d d 的所有因子,那么复杂度是 d \sqrt d d ,复杂度可以接受,那么就这么做就可以了。注意 d = 0 d=0 d=0的情况
当然你也可以去硬解方程,把 b = c − a b=c-a b=c−a 带入第二个等式即可
#include <stdio.h>
void sol() {
int c, d;
scanf("%d %d", &c, &d);
if (d == 0) {
printf("0 %d\n", c);
return;
}
else {
for (int i = 1; i * i <= d; ++i) {
if (d % i == 0 && i + d / i == c) {
printf("%d %d\n", i, d / i);
return;
}
}
}
printf("None\n");
}
int main() {
int T;
scanf("%d", &T);
while (T--) sol();
return 0;
}