hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
瞬间移动
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2404 Accepted Submission(s):
1066
行第m
列的格子有几种方案,答案对1000000007
取模。

两个整数n,m(2≤n,m≤100000)
矩阵从a【1】【1】开始,先枚举题目的少数答案:
0 0 0 0 0 0 0
0 1
0 3 6
0 3 15 21
0 1 20 35 56
0 1 5 15 35 70 126
0 6 21 56 126 252 显然斜着看是一个杨辉三角。
从左上到右下看作一行一行,从左下到右上数该行第几个。
C(x,y) 斜着看,第x行y个
杨辉三角有效部分可用组合数表示为
(0,0) (1,1) (2,2) (3,3) (4,4) (5,5)
(1,0) (2,1) (3,2) (4,3) (5,4)
(2,0) (3,1) (4,2) (5,3)
(3,0) (4,1) (5,2)
(4,0) (5,1)
(5,0)
输入n,m表示n行m列。对应到组合数里。选择杨辉三角部分。
a[n][m]
(2,2) (2,3) (2,4) (2,5) (2,6)
(3,2) (3,3) (3,4) (3,5) (3,6)
(4,2) (4,3) (4,4) (4,5) (4,6)
(5,2) (5,3) (5,4) (5,5) (5,6)
(6,2) (6,3) (6,4) (6,5) (6,6)
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const ll p=1e9+; ll fact[]; void init()
{
memset(fact,,sizeof(fact));
fact[]=fact[]=;
for(ll i=;i<;i++)
fact[i]=fact[i-]*i%p; } ll power(ll a,ll b,ll p)
{
ll res=;
while(b)
{
if(b%)
res=res*a%p;
b=b/;
a=a*a%p;
}
return res%p;
} ll C(ll n, ll m ,ll p)
{ ///C(n,m) = n! / ( m!*(n-m)! )
///数据太大肯定爆,p又是素数。换成求m!*(n-m)!的逆元,又不能一起求,会爆数据,分开求,看做n!/m! * 1/(n-m)!
///由于是对p求模,n,m范围在阶乘表范围里
if(m>n)
return ;
return fact[n] * power(fact[m], p-, p)%p * power(fact[n-m], p-, p) % p;
///fact * power * power 可能爆long long,第二次就要取模
} int main()
{
init();
ll n,m;
while(scanf("%lld%lld",&n,&m)!=EOF)
{
ll ans=C(n+m-,m-,p);
printf("%lld\n",ans);
}
return ;
}
hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)的更多相关文章
- hdu5698瞬间移动(杨辉三角+快速幂+逆元)
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- hdu 5698(杨辉三角的性质+逆元)
---恢复内容开始--- 瞬间移动 Accepts: 1018 Submissions: 3620 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...
- 2014多校第六场 1007 || HDU 4927 Series 1(杨辉三角组合数)
题目链接 题意 : n个数,每操作一次就变成n-1个数,最后变成一个数,输出这个数,操作是指后一个数减前一个数得到的数写下来. 思路 : 找出几个数,算得时候先不要算出来,用式子代替,例如: 1 2 ...
- 51nod 1118 机器人走方格 解题思路:动态规划 & 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题
51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...
- 【考试记录】4.8 Table ( 数论数学 --组合数 & 杨辉三角)
陆陆续续的开始考很多的试,也会更新这些题目记录下来,免得做完了之后毫无印象,就这么水过去了(以前的考试都是如此,哎……) Table (T1) : 样例: 出于对数学题本能的恐惧考场上放弃了此题专攻T ...
- java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题
一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...
- POJ2167Irrelevant Elements[唯一分解定理 组合数 杨辉三角]
Irrelevant Elements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2407 Accepted: 59 ...
- [noip2016]组合数问题<dp+杨辉三角>
题目链接:https://vijos.org/p/2006 当时在考场上只想到了暴力的做法,现在自己看了以后还是没思路,最后看大佬说的杨辉三角才懂这题... 我自己总结了一下,我不能反应出杨辉三角的递 ...
- 51nod 1119【杨辉三角】
思路: = =杨辉三角的应用,组合数的应用: C(N+M,N); 逆元一发,费马小定理,OK. #include <stdio.h> #include <string.h> # ...
随机推荐
- SpringMVC @RequestBody @RequestParam @PathVariable 等参数绑定注解详解
request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: http://blog.csdn.net/walkerjong/article/details/794 ...
- echarts移除百度地图logo方法
移除百度地图LOGO和版权信息 在jsp头上加上如下代码即可: <style type="text/css"> .anchorBL{ display:none } &l ...
- ID3-C45-CART
区别:使用不同的属性选择度量. 信息增益偏向多值属性 信息增益率倾向产生不平衡的划分 基尼指数偏向多值属性,并且当类的数量很大时会有困难,还倾向于导致相等大小的分区和纯度 C4.5: 优点:产生的分类 ...
- 位运算 - a^b
求 a 的 b 次方对 p 取模的值. 输入格式 三个整数 a,b,p ,在同一行用空格隔开. 输出格式 输出一个整数,表示a^b mod p的值. 数据范围 1≤a,b,p≤109 输入样例: 3 ...
- How to Install Tomcat 8.0.27 on CentOS/RHEL and Ubuntu【转】
https://tecadmin.net/install-tomcat-8-on-centos-rhel-and-ubuntu/ Apache Tomcat is an opensource web ...
- [R] t.test()
t.test(x, y = NULL, alternative = c("two.sided", "less","greater"), mu ...
- php配置php_pdo_mysql模块
网上的都是什么编译安装的,总算找到一个简单的方法 安装好PHP yum install php php-fpm -y 直接安装pdo模块 yum install php-pdo_mysql 在/etc ...
- 第0章 概述及常见dos命令
计算机发展史 计算机的发展历史有多长?真正意义上的计算机诞生,距今也只有80多年的时间.80年,对于每一个人来说,是很长的时间,但对于整个历史来说,只是短短的一瞬间. 从第一代电子计算机的发明,到今天 ...
- 迷宫问题bfs, A Knight's Journey(dfs)
迷宫问题(bfs) POJ - 3984 #include <iostream> #include <queue> #include <stack> #incl ...
- 读取 exe dll 自定义config 文件
ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = GPARAM._configF ...