(C) Copyright by IOI日本委員会 1994 All rights reserved.


問題3

20点

 n 個の碁石を k 個の箱の各々に1個以上ずつ残さず配りたい。碁石および 箱の区別をしないとき、可能な配り方をすべて求めたい。例えば、 n=6, k=3 のとき、

    4  1  1,   3  2  1,    2  2  2
の3通りがある。
 n,k をキーボードから入力し、結果を次の例のようにスクリーンに表示する プログラムを作りたい。アルゴリズムの要点を述べ、それに基づいたプログラム を書け。k < 100 とし、出力がスクリーンの1画面 (80×24) に収まる程度 の配り方(高々300通り)しかないような入力だけを考慮すればよい。 また、可能な配り方は、(出力例1)のように、k 桁の n+1 進数としてみた とき大きい順(降順)となるように出力せよ。

(出力例1)
n=6, k=3
可能な配り方は次の3通りあります。
4 1 1, 3 2 1, 2 2 2

(出力例2)
n=3, k=5
可能な配り方はありません。

(出力例3)
n=10, k=-3 データエラーです。