C/C++の宿題片付けます 135代目

このエントリーをはてなブックマークに追加
641デフォルトの名無しさん
このスレの住民の方には楽勝かもしれませんがお願いします

場合の数を計算するときに、いわゆる「nCr」というものを使うことがある。これは、順番を特に決めない場合、n個のものからr個のものを取り出す場合をいい、
7C5 = 7! / (7-5)!5!
である。nCrであれば
nCr = n! / (n-r)!r! (但し、0≦r≦n)

この数を計算したい。
1. nとrを入力させる。
2. n!を計算させる
3. (n-r)!を計算させる
4. r!を計算させる
5. (2)/(3)/(4)を計算する

しかしn!と(n-r)!がかなりの部分まで重複することを利用すれば、かなり計算の手間を省くことができる
1から5の手順まで守ったプログラムと手間を省いたプログラムをそれぞれ作成しなさい