• 締切済み

やってみてもわからないので教えてください

組み合わせ(nCm)を計算するプログラムを作成せよ。 ただし、nの階乗を計算する関数factorialと組み合わせを計算する関数combinationを作成し、 関数combinationの中で関数factorialを使用して組み合わせを計算すること。 <実行結果> 組み合わせnCmを計算します。 nとmを入力してください(n>m) n --> 8 m --> 6 異なる8個の整数から6個の整数を取り出す組み合わせは28通りです。

みんなの回答

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.5

そんな勝ち組のあなたに.... #include <stdio.h> static __int64 tbl[] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 355687428096000, 6402373705728000, 6402373705728000, 2432902008176640000}; static __int64 factorial(__int64 n) { return tbl[n]; } static __int64 combination(__int64 n, __int64 m) { return factorial(n) / factorial(m) / factorial(n - m); } int main(int argc, char* argv[]) { __int64 n, m; printf("組み合わせnCmを計算します。\n"); printf("nとmを入力してください(n>m)\n"); printf("n -->"); scanf("%lld", &n); printf("m -->"); scanf("%lld", &m); printf("異なる%lld個の整数から%lld個の整数を取り出す" "組み合わせは%d通りです。\n", n, m, combination(n, m)); return 0; } // ソースはここまで >nの階乗を計算する関数factorial 作成した >組み合わせを計算する関数combinationを作成し、 >関数combinationの中で関数factorialを使用して組み合わせを計算すること。 combinationの中でfactorialを使用している よって、題意は完全に満たされている 文句のつけようがないはずだ。 事前にテーブルで計算してあるので 非常に高速というおまけつきである。 まさに、勝ち組にふさわしい回答ではないか!!!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

もちろん階乗を使って組み合わせの数を求める公式は存在するので, それをそのままプログラムに書くだけです. でも, 「階乗を使って組み合わせの数を求める」こと自体がしょぼいと思うのはなぜだろう. 普通, 階乗なんか使わないよなぁ. さておき, 「自分で考えてプログラムを作ることはしない」というのは「ある意味でよいプログラマ」だったりしますよね>#3. 何しろ, コピペでいく限り「世の中に存在するバグの数を増やすことは決してあり得ない」わけですし. ただまあ ・なんとしてでも答えを見つけるための検索能力 ・親切な友人を見つけるためのコミュニケーション能力 (資金力も含む) ・何も言わずに他人にさせるだけの権力 などのうち少なくとも 1つは必要な気がしますが.

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.3

>そういう質問の仕方だとちゃんと答えてくれませんよ。 こういう時のための捨てアカウントなんですよ。 誰かの質問に回答してありがとうポイントという評価を貯める必要もありませんし。 # 別人ですがLinuxカテで日に日に質問者の名前の数字がインクリメントされていく方もいましたし。 組み合わせの計算方法、もう忘れてしまいました。 計算式があったかと思われますので引数で受け取って結果を返せばよろしいでしょう。 # 自分でやらないのが勝ち組。 # 技術者としては負け組ですが、どうせ単位だけもらえりゃいいんですしね。

noname#154655
noname#154655
回答No.2

以前も、短時間でいくつも質問さいれていませんでしたか? 名前が違いますけど。 そういう質問の仕方だとちゃんと答えてくれませんよ。 いい人は答えてくれますけど。 どこが分かって、どこが分からないかを書いた方が 答えてもらえると思います。 (途中までのプログラムも書く) 開発環境なども書かれた方がいいと思います。

回答No.1

http://okwave.jp/qa5011671.html http://okwave.jp/qa5011679.html http://okwave.jp/qa5011709.html http://okwave.jp/qa5011726.html と、この質疑。 課題の丸投げでしょうか? >やってみてもわからないので教えてください ということは、「とりあえずやってみた」のですよね? では、どこまで作成してどこがわからない(もしくは作成したが思い通りに動かない)貴方のソース提示してください。 他も同様。

関連するQ&A

専門家に質問してみよう