我想计算
对于n ≥ m,两个值都是不超过 1000 的整数。最终结果是一个不比n大多少的数字,但中间值太大,python 无法处理。你怎么能解决这个问题?
我将函数定义如下。
from scipy.misc import comb
def S(n,m):
return n+m-sum([k**(k - 1)*comb(n, k)*(n - k)**(n + m - k)/n**(n + m - 1) for k in xrange(1,n+1)])
n=m=100
例如,我得到的错误是
RuntimeWarning: overflow encountered in multiply
return n+m-sum([k**(k - 1)*comb(n, k)*(n - k)**(n + m - k)/n**(n + m - 1) for k in xrange(1,n+1)])
[...]
OverflowError: long int too large to convert to float