【初心者歓迎】C/C++室 Ver.48【環境依存OK】at TECH【初心者歓迎】C/C++室 Ver.48【環境依存OK】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドの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 を大幅に越えている。 二項係数の値を求めたいのであれば、 パスカルの三角形を使って足し算だけで求めると良い。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch