説明:
ある日、トンボはチョコレートをn個受け取ります。彼のm人の友人にチョコレートを配布することに決めたので、彼は次のルールを考え出しました。
まず、友情の親密さに基づいて、友達を1からmまでランク付けします。
次に、ランクiの友達がx個のチョコレート(so
F[i]=x
)を取得した場合、の友達はx個以上のチョコレート( so)x+1
を取得する必要があります。ここで、は正の数です。x+k
x <= F[i+1] <= x +k
k
位置1の友人はk個以上のチョコレートを手に入れるべきではありません(そう
F[1] <= k
)一部の友人はチョコレートをゼロにするかもしれません。
可能であれば、トンボにはチョコレートを入れないでください。彼は歯痛があり、キャンディーを食べるべきではありません。
数学に精通していませんが、トンボはすべてのチョコレートを配布する方法の数を知りたがっています。だから彼はあなたの助けを求めています
入力:
入力ファイルは、それぞれが1つのケースを定義する一連の入力行で構成されます。各ケースの入力は、3つの正の整数の1行です。
N (1 <= n <= 500), m (1 <= m <= 100), k (1 <= k <= 100).
入力ファイルはで終了し0 0 0
ます。
出力:
それぞれの場合について、すべてのチョコレートを1行に分配できる方法の数を出力します。
サンプル入力:
1 1 1
4 2 2
5 3 2
0 0 0
出力:
1
2
3
元のページ:http ://acm.whu.edu.cn/learn/problem/detail?problem_id = 1031
再帰的な方法を試しましたが、制限時間を超えました。次に、再帰をキューに置き換えようとしましたが、メモリ制限を超えました。この問題は動的計画法に関するものですか?誰かが私にヒントを与えることができますか?