51nod 1119 机器人走方格 V2(费马小定理+快速幂 求逆元)
来源:互联网 发布:iphone8 用淘宝就发烫 编辑:程序博客网 时间:2024/05/01 23:25
1119 机器人走方格 V2
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
收藏
关注
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
题解:一直不会逆元,借这道题了解了解逆元。 这里利用费马小定理+快速幂 求逆元。还是很好理解的啊。
因为 1e9+7 是质数,质数与任何数都是互质的,所以这里可以使用费马小定理。 由题意,我们需要求得 (a/b) % M
的值。 由费马小定理得到 如果 b与M 互质,则有 b^(M-1) ≡ 1(mod M) , 所以 有 b*b^(M-2) ≡ 1(mod M) 。
所以 (a/b) mod M = (a/b) * (b*b^(M-1)) mod M = (a*(b^(M-2) ) ) mod M 。 然后利用快速幂快速得到 b^(M-2)的值就可以了。
代码如下:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1000000+5;const int mod = 1e9+7;typedef long long LL;LL f[maxn*2];void init(){f[0]=1;f[1]=1;for(int i=2;i<maxn*2;++i)f[i] = (f[i-1]*i) % mod;}LL pow_quick(LL n,LL m){LL res=1;while(m>0){if(m&1)res = (res*n) % mod;n = (n*n) % mod;m>>=1;}return res;}void slove(int n,int m){LL ans = f[n+m-2];ans = (ans * pow_quick(f[n-1],mod-2)) % mod;ans = (ans * pow_quick(f[m-1],mod-2)) % mod;printf("%lld\n",ans);}int main(){init();int n,m;while(scanf("%d%d",&n,&m)!=EOF){slove(n,m);}return 0;}
0 0
- 51nod 1119 机器人走方格 V2(费马小定理+快速幂 求逆元)
- 【51Nod】1119 - 机器人走方格V2(逆元 & 费马小定理 & 快速幂)
- 51nod 1119 机器人走方格V2(求组合数,费马小定理+快速幂/逆元+gcd)
- 51nod 1119 机器人走方格V2 lucas定理
- 51nod 1119 机器人走方格 V2 费马小定理求组合数
- 51nod 1119 机器人走方格 V2
- 51nod-【1119 机器人走方格 V2】
- 51nod-1119 机器人走方格 V2
- 51nod 1119 机器人走方格 V2
- 51Nod 1119 机器人走方格 V2
- 51nod 1119 机器人走方格 v2
- 51nod 1119 机器人走方格 V2
- 51nod1119 机器人走方格 v2 费马小定理求逆元
- 51nod 1119 机器人走方格(费马小定理)
- 51nod 1119 机器人走方格(费马小定理)
- 51nod 1118 机器人走方格 & 1119 机器人走方格 V2(排列组合)
- 51Nod-1119-机器人走方格 V2
- 51 NOD 1119 机器人走方格 V2(Lucas)
- 1093 Air Express
- 简短小文章:让你知道怎样设置placeholder样式
- 在Ubuntu中django创建项目
- 详谈JavaScript的模块化开发
- R语言实战分析预测海藻数量
- 51nod 1119 机器人走方格 V2(费马小定理+快速幂 求逆元)
- 关于struts2中判断表单如果有类名.属性如何在js中获取输入框的值
- HTML table标签,css样式,caption标签,标题及摘要的语法解析
- Sublime3 配置node.js 环境 The process "node.exe" not found
- Binder机制
- 电脑后台终端操作指令大全
- [VLFeat]Fisher vector提取matlab代码
- miui8删除应用商店不卡米
- Bitmap 的分析与使用