关于FST
查看原帖
关于FST
483928
Z1qqurat楼主2023/8/8 17:44

FST了,是直接判Δ\sqrt \Delta是否为整数和xx与Δ\sqrt \Delta 是否同奇偶的,感觉和官方题解的意思没有区别,但是改成官方实现的方法就能过。求神仙帮忙看看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;
}
2023/8/8 17:44
加载中...