これは難しい!
問題概要
2 個の整数 が与えられる。
を満たすような整数 が存在すればそれを答えて、存在しない場合には "IMPOSSIBLE" と答えよ。
解法
これは難しい。結論から言えば、 は整数でなくてもよいならば、
の平均値
となる。下図のように、 が
のちょうど中間にある場合に問題文の条件を満たすからだ (
の場合のみ、
がどの場所にあってもよい)。

よって、
を答えとすればよさそうだ。しかし、 が
で割り切れない場合は
は整数とはならない。このことを考慮すると、次のように答えればよい。
が
で割り切れるとき:
(A + B) / 2が答え- そうでないとき:"IMPOSSIBLE" が答え
なお、 の場合はかならず
が
で割り切れるので心配せずに
(A + B) / 2 を答えれば OK。
#include <bits/stdc++.h> using namespace std; int main() { int A, B; cin >> A >> B; if ((A + B) % 2 == 0) cout << (A + B) / 2 << endl; else cout << "IMPOSSIBLE" << endl; }