ABC006 C - スフィンクスのなぞなぞ
C - スフィンクスのなぞなぞ
提出コード
つるかめ算の3つバージョンですね。
まず初めに、全て2本にしても余る(n×2>m)の場合と、全て4本にしても足りない場合(n×4<m)の場合は、答えが-1のパターンとなります。
次に、真ん中、つまり足が3本の老人に注目します。
とりあえず全員が老人だと仮定したときに、目標となるmとのずれを調べます。
もちろん、全て老人だった場合にmと一致する場合は、それが答えとなります。
n×3>mの場合
足を減らす必要があります。差の分だけ、老人を大人に置き換えてあげると、うまくいきます。
赤ちゃんは0人です。n×3<mの場合
足を追加する必要があるので、今度は足りない人数だけ老人を赤ちゃんに置き換えてあげると、うまくいきます。
大人は0人になります。
これによって、O(1)で答えを求めることができます。