この問題は素直に題意通りの操作を繰り返せば解ける. ビー玉は合計高々 400 個で,それが操作ごとに少なくとも 1 個は減るのだから, 計算時間も問題ない. しかし実はこの問題の答は椀中のビー玉数の最大公約数なのだ.
操作前の椀の中のビー玉数 a, b, c, d の最大公約数を g とすると a'=a/g, b'=b/g, c'=c/g, d'=d/g はすべて整数である. 空でない椀のうち最少のビー玉 a 個とすると, 1 回の操作後の各椀の中のビー玉数は a'g, (b'-a')g, (c'-a')g, (d'-a')g であり,操作後にも g はビー玉数の公約数である.
操作後に残るビー玉数の最大公約数を h とすると a''=a/h, b''=(b-a)/h, c''=(c-a)/h, d''=(d-a)/h はすべて整数である.これを使って操作後のビー玉数を表すと a''h, (b''-a'')h, (c''-a'')h, (d''-a'')h となる.操作で取り除いたビー玉 a = a''h 個を元に戻すと, 操作前のビー玉数は a''h, b''h, c''h, d''h と表せるので,h は操作前のビー玉数の公約数でもあることがわかる. 操作前には g が最大公約数なので h ≤ g, 操作後には h が最大公約数なので g ≤ h, だから h = g, つまり操作はビー玉数の最大公約数を変えない. 繰返し操作の終了時には空でない椀はひとつだけで, その椀の中のビー玉数が全部の椀内の個数の最大公約数であり, それが初期状態のビー玉数の最大公約数に等しいわけである.
ユークリッド互除法で最大公約数を求める計算量は, ビー玉数の対数×椀の数のオーダーで, 入力のビー玉数や椀の数をかなり大きくしても計算時間はごく短く済むのだが, この問題では素朴な解法で解ける入力値の範囲とした.