gpt4 book ai didi

algorithm - 进行非常大的计算

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:06 25 4
gpt4 key购买 nike

我想计算值

X =n!/2^r

where n<10^6 and r<10^6
and it's guarantee that value of X is between O to 10

如何计算 X,因为我不能简单地除以阶乘项和幂项,因为它们会溢出长整数。

我的方法
在模数的帮助下做。取一个大于 10 的质数,比如 101

 X=  [(Factorial N%101)*inverse Modulo of(2^r)]%101;

请注意,反模很容易计算,2^r%101 也可以计算。

问题:
不能保证X 始终是整数,它也可以是 float 。当 X 是整数时,我的方法可以正常工作吗? X为 float 时如何处理

最佳答案

如果近似结果没问题,并且您可以访问具有 base-2 指数(exp2 in C)、自然对数 Gamma (lgamma in C)的数学库,和自然对数(log in C),那么你可以做

exp2(lgamma(n+1)/log(2) - r).

关于algorithm - 进行非常大的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42089762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com