c – 重复排列:避免溢出

前端之家收集整理的这篇文章主要介绍了c – 重复排列:避免溢出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
背景:

鉴于n球,使得:

'a' balls are of colour GREEN
'b' balls are of colour BLUE
'c' balls are of colour RED
...

(当然是b c … = n)

可以安排这些球的排列数量由下式给出:

perm = n! / (a! b! c! ..)

问题1:
我怎样才能“优雅地”计算烫发,以尽可能避免整数溢出,并确保当我完成计算时,我要么具有正确的烫发值,要么我知道最终结果会溢出?

基本上,我想避免使用像GNU GMP这样的东西.

可选的,问题2:
这是一个非常糟糕的主意,我应该继续使用GMP吗?

解决方法

如果你有cpu时间的全局,你可以从所有阶乘中列出列表,然后找到列表中所有数字的素数因子化,然后取消顶部的所有数字与底部的数字,直到数字完全降低.

猜你在找的C&C++相关文章