【初心者歓迎】C/C++室 Ver.48【環境依存OK】
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
500:デフォルトの名無しさん 08/02/12 09:00:25 組み合わせの計算させるようとしたんですが、出力が0になってしまいます。 ブレークポイントで止めて確認したところ、Anの値がAnrの値より小さくなって いるみたいなんですが何故でしょうか? もしかして表現できる桁数を越えてるから? そうだとしたらこれ以上大きな値が扱える型ないですか? unsigned long long int Kumiawase(int); int main(){ int n=36; int r=6; unsigned long long int Ar=Kumiawase(r),An=Kumiawase(n),Anr=Kumiawase(n-r); cout<<An/(Ar*Anr)<<endl; } unsigned long long int Kumiawase(int n){ unsigned long long int Ans=1; for(int i=1;i<=n;i++){ Ans*=i; } return Ans; } 501:デフォルトの名無しさん 08/02/12 09:11:10 >>500 36! は 371993326789901217467999448150835200000000 であって、 2^64 = 18446744073709551616 を大幅に越えている。 二項係数の値を求めたいのであれば、 パスカルの三角形を使って足し算だけで求めると良い。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4987日前に更新/249 KB
担当:undef