#pragma GCC optimize ("O2") #pragma GCC target ("avx2") #include using namespace std; typedef long long ll; #define rep(i, n) for(int i = 0; i < (n); i++) #define rep1(i, n) for(int i = 1; i <= (n); i++) #define co(x) cout << (x) << "\n" #define cosp(x) cout << (x) << " " #define ce(x) cerr << (x) << "\n" #define cesp(x) cerr << (x) << " " #define pb push_back #define mp make_pair #define chmin(x, y) x = min(x, y) #define chmax(x, y) x = max(x, y) #define Would #define you #define please const int mod = 1000000007; const int IMAX = 100000; constexpr ll modpow(ll A, ll B) { ll kotae = 1; while (B > 0) { if (B & 1) kotae = kotae * A % mod; A = A * A % mod; B >>= 1; } return kotae; } int main() { cin.tie(0); ios::sync_with_stdio(false); int S; cin >> S; rep(s, S) { int X, Y; cin >> X >> Y; if (X == Y) { int kotae = X - 1; int are = sqrt(X); rep1(i, are) { if (X % i == 0) { int j = X / i; if (i > 2) kotae++; if (i != j && j > 2) kotae++; } } co(kotae); } else { if (X < Y) swap(X, Y); int XY = X - Y; int kotae = 0; int are = sqrt(XY); rep1(i, are) { if (XY % i == 0) { int j = XY / i; if ((X + Y) % (i + 2) == 0) { int tmp = (X + Y) / (i + 2); if (tmp > j && (tmp - j) % 2 == 0) kotae++; } if (i != j && (X + Y) % (j + 2) == 0) { int tmp = (X + Y) / (j + 2); if (tmp > i && (tmp - i) % 2 == 0) kotae++; } } } co(kotae); } } Would you please return 0; }