51nod 1120 机器人走方格V3【卡特兰数】【卢卡斯定理】
来源:互联网 发布:河南广电网络客服电话 编辑:程序博客网 时间:2024/04/30 10:40
Description
N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10007的结果。
题解
答案就是
所以就是一个求大组合数模一个质数的题目,可以用卢卡斯定理
代码
#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define tt 10007using namespace std;int n,p,f[tt+6],inv[tt+6];int power(int x,int y){ int w=x,sum=1; while(y){ if(y&1)sum=(LL)sum*w%tt; y>>=1;w=(LL)w*w%tt; } return sum;}int C(int n,int m){ if(n<tt&&m<tt)return (LL)f[n]*inv[m]%tt*inv[n-m]%tt; return (LL)C(n/tt,m/tt)*C(n%tt,m%tt)%tt;}int main(){ freopen("robot.in","r",stdin); freopen("robot.out","w",stdout); scanf("%d",&n);n--; f[0]=1; for(int i=1;i<tt;i++)f[i]=(LL)f[i-1]*i%tt; inv[tt-1]=power(f[tt-1],tt-2); for(int i=tt-2;i>=0;i--)inv[i]=(LL)(inv[i+1]*(i+1))%tt; p=power(n+1,tt-2); printf("%lld\n",(LL)C(n*2,n)*p%tt*2%tt);}
阅读全文
0 0
- 51nod 1120 机器人走方格V3 卡特兰数+卢卡斯定理
- 51nod 1120 机器人走方格V3【卡特兰数】【卢卡斯定理】
- 51nod 1120 机器人走方格 V3(卡特兰数,lucas定理)
- 51nod 1120 机器人走方格V3(组合数学+卡特兰数+Lucas)
- 51nod 1120 机器人走方格 V3 lucas+卡特兰+逆原 好题
- 51NOD 1120 机器人走方格 V3(卢卡斯定理 + 非降路径)
- 51nod 1120 机器人走方格v3
- 51nod 1120 机器人走方格 V3
- 【51 Nod】 1120 机器人走方格 V3
- 51Nod-1120-机器人走方格 V3
- 51node-1120 机器人走方格(卡特兰数列+Lucas定理)
- 51Nod 1120 卡特兰数+卢卡斯定理
- [51nod-1120]机器人走方格V3 题解
- 2017-10-22 51nod 1120 卢卡斯定理 Lucas 组合数取模 卡特兰数
- 51nod 1119 机器人走方格 V2 费马小定理求组合数
- 51nod 1119 机器人走方格(费马小定理)
- 51nod 1119 机器人走方格(费马小定理)
- 51nod 1119 机器人走方格V2 lucas定理
- 利用并查集进行图中两顶点是否连通的判断
- 使用原生js手动触发事件
- CAFFE中的一些问题
- 我的秘密武器—shell
- [JavaScript]ECMA-262-3 深入解析.第五章.闭包
- 51nod 1120 机器人走方格V3【卡特兰数】【卢卡斯定理】
- eclipse导入远程git仓库中的项目
- 【Android studio】快捷键整理
- LibreOJ NOIP Round #1 —— 蒟蒻总结&部分题解
- 适配器模式
- 1066. 图像过滤(15)——C语言
- mybatis xml写法
- Linux命令整理(一)
- 一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some