これは難しい!
問題概要
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; }