3-philia, 3-phobia

2 secs 1024 MB
riano_'s icon riano_

まず、milkcoffee君の条件を考えます。 明らかに、与えられた数の総和が 33 の倍数であることが必要です。 実は、これが十分条件でもあります。 33 で割った余りが同じものを 33 つずつの組を構成していくことを考えると、 各余りのグループについて、個数を 33 で割った余りの分だけ残ることになります。 ここで、総和が 33 の倍数かつ全体の個数が 33 の倍数であるとき、 余り 001122 の残る個数は等しくなることが証明できます。 よって、残っているものを余り 001122 の組にすることで目標を達成可能です。 (ここまで考えずとも、残る個数が等しいかを判定することで正当にACすることも可能です。)

次に、riano君の条件を考えます。 33 つの数の組が 33 で割り切れないとき、33 で割った余りで分類したグループで見ると 「11 つのグループから 22 個、別のグループから 11 個」という選び方をしています。 したがって、まずこの分類において全体の 2/32/3 を超える個数のグループがある場合は不可になります。 (鳩ノ巣原理より少なくとも 11 つの組が、該当のグループから 33 つ取ることになってしまいます。) 実は、これがほぼ十分条件となっています。 例外は、全体で 33 個であり、各余りが 001122 となる場合のみです。

証明として、具体的な構成を考えてみます。 まず、余りごとに分けて全てのグループの個数が等しい場合、 22 個ずつ、および 33 個ずつの場合の構成は手で構築可能です。 22 以上の整数は全て、2233 のいくつかの和で表すことができるため、11 個ずつの場合を除いてこれらの組み合わせで構成が可能です。

個数に不均衡がある場合、最も少ないものが無くなるまで、上記の構成を行います。 ただし、途中で最も多いものの個数が残りの 2/32/3 に等しくなったらこれを中断します。 残りの個数の 2/32/3 は各ステップ 22 ずつ、最も多いグループの個数は 11 ずつ減っていくため、 飛び越してしまうことはありません。 途中で最も多いものの個数が残りの 2/32/3 に等しくなった時、 あとはそのグループから 22 つ取る構成を続ければ構築が完成します。 中断することなく残りが 22 種類になった場合は、 片方が残りの個数の 2/32/3 を越えないように注意すれば簡単に構築できます。 最後に、最も少ないグループに属するものが 11 個であった場合、 11 個ずつ取り除くことはできませんので、 最初にこの 11 個と、最も多いグループから 22 個で構成することで調整を行います。 (全てのグループが 11 個の場合このステップが不可能であるため例外となります。) 以上から、構成が可能であることを証明できました。

まとめると、それぞれ目的を達成可能な条件は、

  • milkcoffee君について、与えられた数の総和が 33 の倍数であること
  • riano君について、 33 で割った余りごとのグループ分けをして、全体の 2/32/3 を越える組がなく、 また全ての組が 11 個ずつでもないこと

となります。