AGC014: A - Cookie Exchanges
問題
解説
適当にシミュレーションで実験をしてみると、操作回数は多くなさそう+クッキーの数は互いに近づきつつ一致せずに停止することがわかる。
よって、シミュレーションのコードを提出した。3つが同数の場合、奇数なら0で、偶数なら-1となる。
公式の解説によると、最大値と最小値の差が半減していくのでの計算量になる。 https://atcoder.jp/img/agc014/editorial.pdf
template<class T> void operator>> (istream& ist, vector<T>& vs) { for(auto& e: vs) cin >> e; } int main() { vector<int> v(3); cin >> v; if (v[0] == v[1] && v[1] == v[2]) { cout << (v[0] % 2 ? 0 : -1) << "\n"; exit(0); } int counter = 0; while (1) { if (v[0] % 2 || v[1] % 2 || v[2] % 2) break; v = {(v[1] + v[2]) / 2, (v[2] + v[0]) / 2, (v[0] + v[1]) / 2}; counter++; } cout << counter << "\n"; }