http://q.hatena.ne.jp/1299505561

仮にA君が嘘を言っていないと仮定すると、小さいのを食べたのはA君になります。
しかしA君は嘘を言っています。
ということは大中小とABCの対応を入れ替えなければ事実にはなりません。
それには少なくとも2つの対応を入れ替えなければなりません。
しかしA君が直接言った嘘は1つだけなので、
A君が直接言ってはいない「小さいのを食べたのはA君」も偽であることが確定します。

同様にB君の証言を考えれば、小さいのを食べたのはC君ではありません。

二人の証言を合わせれば
【小さいのを食べたのは】A君でもC君でもないので、【B君で確定】します。

よってA君の証言に戻り、A君の証言で嘘なのは
「大きいのを食べたのはB君」の方なので
【中くらいのを食べたのはC君】は真になり

残ったケーキと人物を組み合わせて
【大きいのを食べたのはA君】となります。