题目
N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果。 N<=1e9
思路
卡特兰数+卢卡斯定理+乘法逆元算组合数
卡特兰数:某百科卡特兰数词条讲过这种情况。
卢卡斯定理:组合数,模数很小,逐次拆分

乘法逆元,见前面,此处n+1不能保证和p互质,建议用卡特兰数两组合数相减的公式。(不过数据很弱我写的/(n+1))
代码
1 |
|
N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果。 N<=1e9
卡特兰数+卢卡斯定理+乘法逆元算组合数
卡特兰数:某百科卡特兰数词条讲过这种情况。
卢卡斯定理:组合数,模数很小,逐次拆分

乘法逆元,见前面,此处n+1不能保证和p互质,建议用卡特兰数两组合数相减的公式。(不过数据很弱我写的/(n+1))
1 | #include<bits/stdc++.h> |