>C言語での組み合わせの問題について入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。入力した値n=29までは正しい答えが得られるのですがn=30以降では途中から答えが狂い始めます.この現象はなぜ起こるのでしょうか?通報するこの質問への回答は締め切られました。までは正しく求めることができます。30C14=145,422,675に(30-15+1)=16を掛けると、intで取り扱うことができる最大の数値(2の31乗よりも1小さい値:2,147,483,647)よりも大きくなってしまいます(オーバーフローです)。以降は正しくないnckの値を使って次の値を求めているので当然正しい値は得られません。#1の回答の「(n-k+1)/kは恒に整数か?」は何を指摘されているのかわかりません。nck*(n-k+1)は、オーバーフローしない限り、kで割り切れます。「nckの最大値は?」については、n≦33であればnCkの値がintの最大値を超えることはありません。overflowです。正しい結果がほしいなら、gmpなどを使うことを検討すると良いかもしれません。http://gmplib.org/参考までに、こんな感じに書き換えられます。gmpのライブラリーとリンクしてください。00:47(n-k+1)/kは恒に整数か?intはどのような変数か?nckの最大値は?いずれも基礎中の基礎。回答数ランキングです。最大値このQ&Aと関連する良く見られている質問Q組み合わせ順列nCrを求める関数combination(n,r)をC言語で作りたいのですが、どうすればよいか教えてください。参考となるようなサイトを教えてください。僕の作った関数だと、すぐに桁あふれになってしまいます。そのことを考慮して、桁あふれにになりにくい関数もつくりました。+n-1Cr-1の関係を使っての再帰関数です。これだと結果を出すのに時間がかかってしまいます。僕がつくった関数をいくつか出しておきますのでいい考えがあれば教えてください。64C32が高速に正確に出れれば最高です。c;}これはすぐに桁あふれになってしまう。(long)c;}これはcをdoubleにして計算する分、丸めこみが生じ誤差がでる。c;}}これは誤差は出ず正確であるがいかんせん遅い!nCrを求める関数combination(n,r)をC言語で作りたいのですが、どうすればよいか教えてください。参考となるようなサイトを教えてください。僕の作った関数だと、すぐに桁あふれになってしまいます。そのことを考慮して、桁あふれにになりにくい関数もつくりました。+n-1Cr-1の関係を使っての再帰関数です。これだと結果を出すのに時間がかかってしまいます。僕がつくった関数をいくつか出しておきますのでいい考えがあれば教えてください。1832624140942590534だそうです。combination(64,i));...続きを読む他の回答も見るQn個の要素で出来る順列組み合わせを全て出力するアルゴリズム次のようなプログラムをC++で書こうと思っているのですが、どうも方法が思い浮かびません。よいやり方、定番のやり方などがありましたら教えてください。---------------------------------n個の要素があるとき、そのn個で出来る順列組み合わせ(計(n!)通り)を全て出力する。「順列組合せ」ではなく「順列の生成」ですね。アルゴリズムの原理を知りたければ次のWlframのサイトでわかりやすく説明しています。下のほうのところで、再帰を使ったものが例示されています。http://mathworld.wolfram.com/Permutation.htmlソースを見たいなら、http://www.merriampark.com/perm.htmあたりで。C++では、順列生成は標準ライブラリに入っています。next_permutation,prev_permutationを使って下さい。#elseの意味について5VBAでfor文の中で、continueしたい6ASP+アクセスでのSQLコメントに...7入力した数値を倍々するプログラム8getcの改行判定9C言語初心者の質問失礼します。Case数字の位ごとの値を表示するプ...C言語初心者の質問失礼します。#elseの意味について4ASP+アクセスでのSQLコメントに...5C言語の二分法のプログラムにつ...6wsprintf関数の使い方について7C言語のfor文です。Inc.Q質問する(無料)Q&A検索goo検索gooIDで新規登録・ログイン新規登録する(無料)会員の方はこちら外部サービスのアカウントで新規登録・ログインYahoo!で新規登録・ログインGoogleで新規登録・ログインTwitterで新規登録・ログインFacebookで新規登録・ログインdアカウントで新規登録・ログイン※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。会員でない方、会員になるとあなたも質問や回答ができるようになります!!親切・丁寧な回答が集まる場30分以内に回答がもらえ回答数は平均3件!匿名(ニックネーム)での投稿なので。