#include #define int long long #define double long double using namespace std; template string tostr(T x) { stringstream o; o << x; return o.str(); } template T sqr(T x) { return x * x; } template T mypow(T x, int n) { T r = 1; while (n > 0) { if (n & 1) r = r * x; x = x * x; n >>= 1; } return r; } int toint(string s) { int v; stringstream i(s); i >> v; return v; } bool check(int x, int y, int w, int h) { return x >= 0 && y >= 0 && w > x && h > y; } int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } int lcm(int a, int b) { return a / gcd(a, b) * b; } #define REP(i, a, b) for (int(i) = (a); i < (b); (i)++) #define rep(i, n) REP(i, 0, n) #define PER(i, a, b) for (int(i) = (a - 1); i >= (b); (i)--) #define per(i, n) PER(i, n, 0) #define each(i, n) for (auto& i : n) #define clr(a) memset((a), 0, sizeof(a)) #define mclr(a) memset((a), -1, sizeof(a)) #define all(a) (a).begin(), (a).end() #define dump(val) cerr << #val " = " << val << endl; #define dum(val) cerr << #val " = " << val; #define FILL(a, v) fill(a, a + sizeof(a) / sizeof(*a), v) const int dx[8] = {+1, +0, -1, +0, +1, +1, -1, -1}; const int dy[8] = {+0, -1, +0, +1, -1, +1, -1, +1}; const int mod = 1e9 + 7; const int INF = 1e9; const double EPS = 1e-8; typedef vector vec; typedef vector mat; /* 1x + 2y = 5 3x + 4y = 6 (x = -4, y = 4.5) A = { {1, 2}, {3, 4} } b = { 5, 6 } ans = {-4, 4.5} */ vec gauss_jordan(const mat& A, const vec& b) { int n = A.size(); mat B(n, vec(n + 1)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { B[i][j] = A[i][j]; } } for (int i = 0; i < n; i++) B[i][n] = b[i]; for (int i = 0; i < n; i++) { int pivot = i; for (int j = i; j < n; j++) { if (abs(B[j][i]) > abs(B[pivot][i])) pivot = j; } swap(B[i], B[pivot]); if (abs(B[i][i]) < EPS) return vec(); for (int j = i + 1; j <= n; j++) B[i][j] /= B[i][i]; for (int j = 0; j < n; j++) { if (i != j) { for (int k = i + 1; k <= n; k++) B[j][k] -= B[j][i] * B[i][k]; } } } vec x(n); for (int i = 0; i < n; i++) x[i] = B[i][n]; return x; } #define EQ(n, m) (abs((n) - (m)) < EPS) // n == m signed main() { double a, b, c; cin >> a >> b >> c; for (int e = -1e+6; e <= 1e+6; e++) { mat A0 = { vec({c, 1}), vec({b, 1}), }; vec B0 = {e, c}; auto v0 = gauss_jordan(A0, B0); mat A1 = { vec({c, 1}), vec({a, 1}), }; vec B1 = {e, b}; auto v1 = gauss_jordan(A1, B1); if (v1.size() && v0.size() && EQ(v0[0], v1[0]) && EQ(v0[1], v1[1])) { cout << e << endl; return 0; } } }