hdu 5177 (1e18范围的卡特兰数)

本文探讨了如何在大数环境下求解卡特兰数问题,重点在于解决算法的精度和效率,适用于1e18数量级的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdu 5177 (1e18范围的卡特兰数)

题意:
求第n个卡特兰数,模3814697265625 (5^18)

限制:
有20组数据,1 <= n <= 1e18

思路:
1. 卡特兰数的表达式:
ans = 1/(n+1) * C(2*n,n)
-> ans = 1/(n+1) * (2n)! / n! / n!    ---1式

2. 因为要模5^18,求逆元要求互质,所以先把"1式"中的因子5全部去掉

3. 然后看不含因子5的阶乘,f(n!)

4. 设g(x,n)=(x+1)(x+2)(x+3)(x+4)(x+6)..(x+n)%M,x+d里面的d不是5的倍数

5. 则有f(n!)=g(0,n)*g(0,n/5)*g(0,n/25)*…*g(0,0)%M    ---这里需要log(n)的复杂度

6. 对于每个g(x,n)我们可以把g(x,n)分成尽量均匀的两
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值