毒入りワインでないワインを安全なワインと言うことにします。
ワインを飲んだ友達の体調に注目します。もし、その友達が体調を崩さなかったら、飲んだ 本のワインはすべて安全であることが言えます。一方、その友達が体調を崩したら、飲んだワインの中に毒入りワインが存在します。しかし、毒入りワインは 本しか存在しないので、飲んでいない 本のワインはすべて安全であることが言えます。
安全だと分かったワインに「安全」というラベルを貼り、最終的に 本のワインが安全だと分かったら、毒入りワインは残った 本のワインであると特定できます。
逆に、安全かどうか分からないワインが 本以上あるとしたら、毒入りワインは特定できません。これは、安全かどうか分からないワインのどれが毒入りワインであったとしても、友人の「体調を崩した・崩していない」という情報が全く変わらないからです。
「安全なワインを選ぶ」ということを考えると、問題は次のように置き換えられます。
ワイン の 本のワインがあると考える。各友達に対して、次を行う:
最終的に、各ワインが 本以上選ばれるような方法の個数は何通りか?
本のワインのうち「 番目のワインが選ばれない」という 個の条件たちで包除原理を適用することを考えます。
本のワインが選ばれないとすると、 本のワインだけが選ばれる権利があります。選ばれる権利がある 本のワインを固定すると、各友達に対してのワインの選び方は、タイプ の 通り、タイプ の 通りあります。よって、この場合は
通りの選び方があります。包除原理を適用して、答えは
となります。これは、階乗 mod と、繰り返し二乗法を行うことで 時間で計算できます。