#include <bits/stdc+
2026-08-14 14:31:24
发布于:广东
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
bool check(ll u, ll v, ll w, ll x) {
if (u * x + v == w) return true;
if (u * x + w == v) return true;
if (v * x + u == w) return true;
if (v * x + w == u) return true;
if (w * x + u == v) return true;
if (w * x + v == u) return true;
return false;
}
vector<ll> get_candidates(ll u, ll v, ll w) {
vector<ll> res;
if ((w - v) % u == 0) {
ll x = (w - v) / u;
if (x >= 0) res.push_back(x);
}
if ((v - w) % u == 0) {
ll x = (v - w) / u;
if (x >= 0) res.push_back(x);
}
if ((w - u) % v == 0) {
ll x = (w - u) / v;
if (x >= 0) res.push_back(x);
}
if ((u - w) % v == 0) {
ll x = (u - w) / v;
if (x >= 0) res.push_back(x);
}
if ((v - u) % w == 0) {
ll x = (v - u) / w;
if (x >= 0) res.push_back(x);
}
if ((u - v) % w == 0) {
ll x = (u - v) / w;
if (x >= 0) res.push_back(x);
}
sort(res.begin(), res.end());
res.erase(unique(res.begin(), res.end()), res.end());
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
vector<array<ll, 3>> eqs(n);
for (int i = 0; i < n; i++) {
cin >> eqs[i][0] >> eqs[i][1] >> eqs[i][2];
}
// 从第一条方程获取候选 x —— 修正了这一行!
vector<ll> candidates = get_candidates(eqs[0], eqs[1], eqs[2](@ref); // 修正:eqs[0] 即 u, eqs[1] 即 v, eqs[2] 即 w
ll ans = -1;
for (ll x : candidates) {
bool ok = true;
for (int i = 0; i < n && ok; i++) {
if (!check(eqs[i][0], eqs[i][1], eqs[i][2], x)) {
ok = false;
}
}
if (ok) {
ans = x;
break;
}
}
cout << ans << '\n';
}
return 0;
}
这里空空如也







有帮助,赞一个