【51node】-1119- 机器人走方格(费马小定理,逆元,快速幂)
2016-08-12 15:22
239 查看
1119 机器人走方格 V2
![](http://file.51nod.com/images/icon/ok.png)
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
![](http://file.51nod.com/images/icon/star.png)
收藏
![](http://file.51nod.com/images/icon/plus.png)
关注
M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。
Input
Output
Input示例
Output示例
题意:就是求C(n+m-2,n-1)啦,只是数比较大用到了逆元。
题解:上面一道题是和这个一样的题目。这里把逆元和阶乘放在一起求,不过要注意数组nec[ ]表示逆元的大小,也要开的和fac[ ](阶乘数)一样大。
![](http://file.51nod.com/images/icon/ok.png)
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
![](http://file.51nod.com/images/icon/star.png)
收藏
![](http://file.51nod.com/images/icon/plus.png)
关注
M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。
Input
第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000000)
Output
输出走法的数量 Mod 10^9 + 7。
Input示例
2 3
Output示例
3
题意:就是求C(n+m-2,n-1)啦,只是数比较大用到了逆元。
题解:上面一道题是和这个一样的题目。这里把逆元和阶乘放在一起求,不过要注意数组nec[ ]表示逆元的大小,也要开的和fac[ ](阶乘数)一样大。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f #define CLR(a,b) memset(a,b,sizeof(a)) #define LL long long const int mod=1000000007; LL fac[2000010]; LL nec[2000010]; LL quick_mod(LL n,LL m) //快速幂求逆元 { LL ans=1; while(m) { if(m&1) ans=ans*n%mod; n=n*n%mod; m>>=1; } return ans; } void getfac() { fac[0]=nec[0]=1; for(int i=1;i<2000010;i++) { fac[i]=fac[i-1]*i%mod; //求阶乘 nec[i]=quick_mod(fac[i],mod-2); //求逆元 } } LL C(int n,int m) { return fac *(nec[m]*nec[n-m]%mod)%mod; //返回n!*( m!*(n-m)!的逆元 ) } int main() { getfac(); LL n,m; while(~scanf("%lld %lld",&n,&m)) printf("%lld\n",C(n+m-2,n-1)); return 0; }
相关文章推荐
- cephfs kernel client针对dir的inode操作
- nodejs 服务器重新启动
- leetCode 19. Remove Nth Node From End of List 链表
- [leetcode] 116. Populating Next Right Pointers in Each Node
- node的npm install 安装包太慢解决方法
- 基于AngularJS+NodeJS+Bootstrap+SpringMVC构建项目(1)
- Mac机配置 Sublime Text 用 Node.js 执行 JavaScript 程序
- #451 Swap Nodes in Pairs
- nodejs系统包之util(工具包)
- #511 Swap Two Nodes in Linked List
- LeetCode—382. Linked List Random Node
- cephfs kernel client针对inode的相关操作
- Node[4] --数据
- 谈谈这一年来做项目的经历(2)
- 安装及升级node
- 384. Shuffle an Array && 382. Linked List Random Node
- 几种pc端页面 常用的js兼容ie写法,几个名词 nodeName nodeValue及value addEventListener attachEvent
- nodejs 守护 forever
- [leetcode] 382. Linked List Random Node 解题报告
- <LeetCode OJ> 382. Linked List Random Node