背景:これらのボールを配置することが可能な順列の数が与えられる(もちろんa + b + c + ... = n
の)順列:回避オーバーフロー
'a' balls are of colour GREEN
'b' balls are of colour BLUE
'c' balls are of colour RED
...
:
このようなことn
ボールを考えますby:
perm = n!/(a! b! c! ..)
質問1: は、どのように私は限りできるだけ整数オーバーフローを避けるため、と私は計算行っていたとき、私はどちらかがperm
の正しい値を持っているか、私はそのを知ってことを確認するようにperm
を計算「エレガント」することができます最終結果はオーバーフローしますか?
基本的に、私はGNU GMPのようなものを使用しないでください。
質問2: これはで、実際はという悪い考えです.GMPを使用するだけですか?
なぜGMPを避けたいですか?一般的に、あなたは出来る限りの仕事をしたいと思っています。 – Dave
オーバーフローの検出は実際にはCの弱点の1つです。できるだけオーバーフローを避けるため、オーバフローせずに計算できるのであれば、正しい値をとれるようにすることができます。それでも、オーバーフローが実際に発生したかどうかはまだ分かりません。 – ruakh
@Dave:そうです。それにもかかわらず、問題は面白いです。ですから、「なぜ」よりも「方法」を気にする人にとっては疑問が残っています。誰かがインタラクティブトースターの8051でそれを使ってしまうかもしれません:P – ArjunShankar