まず、milkcoffee君の条件を考えます。 明らかに、与えられた数の総和が の倍数であることが必要です。 実は、これが十分条件でもあります。 で割った余りが同じものを つずつの組を構成していくことを考えると、 各余りのグループについて、個数を で割った余りの分だけ残ることになります。 ここで、総和が の倍数かつ全体の個数が の倍数であるとき、 余り 、、 の残る個数は等しくなることが証明できます。 よって、残っているものを余り 、、 の組にすることで目標を達成可能です。 (ここまで考えずとも、残る個数が等しいかを判定することで正当にACすることも可能です。)
次に、riano君の条件を考えます。 つの数の組が で割り切れないとき、 で割った余りで分類したグループで見ると 「 つのグループから 個、別のグループから 個」という選び方をしています。 したがって、まずこの分類において全体の を超える個数のグループがある場合は不可になります。 (鳩ノ巣原理より少なくとも つの組が、該当のグループから つ取ることになってしまいます。) 実は、これがほぼ十分条件となっています。 例外は、全体で 個であり、各余りが 、、 となる場合のみです。
証明として、具体的な構成を考えてみます。 まず、余りごとに分けて全てのグループの個数が等しい場合、 個ずつ、および 個ずつの場合の構成は手で構築可能です。 以上の整数は全て、 と のいくつかの和で表すことができるため、 個ずつの場合を除いてこれらの組み合わせで構成が可能です。
個数に不均衡がある場合、最も少ないものが無くなるまで、上記の構成を行います。 ただし、途中で最も多いものの個数が残りの に等しくなったらこれを中断します。 残りの個数の は各ステップ ずつ、最も多いグループの個数は ずつ減っていくため、 飛び越してしまうことはありません。 途中で最も多いものの個数が残りの に等しくなった時、 あとはそのグループから つ取る構成を続ければ構築が完成します。 中断することなく残りが 種類になった場合は、 片方が残りの個数の を越えないように注意すれば簡単に構築できます。 最後に、最も少ないグループに属するものが 個であった場合、 個ずつ取り除くことはできませんので、 最初にこの 個と、最も多いグループから 個で構成することで調整を行います。 (全てのグループが 個の場合このステップが不可能であるため例外となります。) 以上から、構成が可能であることを証明できました。
まとめると、それぞれ目的を達成可能な条件は、
となります。