最近,XY 有了一个新发现:对于二元正整数组 $(x,y)$,一定可以找到一个自然数 $a$ 与整数 $b$,使 $a(x+y)+b=xy$。例如,对于 $x=6,y=12$ 的情况,$(a,b)$ 既可以是 $(4,0)$,也可以是 $(3,18)$,等等。
不过,过了不久,他又把问题反过来想了想:要是给定了 $(a,b)$,那么有没有办法求出满足上式的 $(x,y)$ 的组数呢?他冥思苦想了好一会儿,仍旧没找到答案。那么,聪明的你能帮助他吗?
本题有多组数据。
第一行一个正整数 $T$ 表示数据组数,后面 $T$ 行中每行输入自然数 $a$ 与整数 $b$(以一空格隔开),其具体含义见上。
对于每组数据,一行一个数表示满足条件的 $(x,y)$ 的组数。
4
0 1
1 0
3 -1
4 0
输出:
1
1
4
5
#include <iostream>
using namespace std;
int f(int a, int b) {
int result = 0;
for (int x = 1; x <= 1000; x++) {
for (int y = 1; y <= 1000; y++) {
if (a * (x + y) + b == x * y) {
result++;
}
}
}
return result;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int a, b;
cin >> a >> b;
cout << f(a, b) << endl;
}
return 0;
}