FST了,是直接判Δ是否为整数和x与Δ 是否同奇偶的,感觉和官方题解的意思没有区别,但是改成官方实现的方法就能过。求神仙帮忙看看qwq
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5 + 5;
int t, n, m;
map <ll, int> mp;
void solve() {
mp.clear();
cin >> n;
for (int i = 1; i <= n; ++i) {
ll a; cin >> a;
mp[a]++;
}
cin >> m;
for (int i = 1; i <= m; ++i) {
ll x, y, z; cin >> x >> y;
ll zz = x * x - 4 * y;
if(zz < 0 || sqrt(zz) * sqrt(zz) != zz) {
cout << "0 "; continue;
}
z = sqrt(zz);
if((x & 1) != (z & 1)) {
cout << "0 "; continue;
}
ll a = (x + z) / 2, b = (x - z) / 2;
if(a != b) {
cout << (ll)mp[a] * mp[b] << ' ';
}
else {
ll c = mp[a];
cout << c * (c - 1) / 2 << ' ';
}
}
puts(""); return ;
}
int main() {
cin >> t;
while(t--) solve();
return 0;
}