嘿嘿嘿好久没写数学题了,偶尔看到一道写一写。。。

题目大意:一个(n+1)*(m+1)【0<=n, m<=10^12,n*m<=10^12】的矩阵,C(0,0)=1,C(x,y)=C(x-1,y)+C(x,y-1),求从0,0走到n,m路上最小权值(即为前面的C)和mod 10^9+7。

看到这个C(x,y)=C(x-1,y)+C(x,y-1),第一反应就是杨辉三角,所以这个矩阵其实就是一个由组合数组成的矩阵,第i行第j列的权值为C(i+j,j)【注意这个矩形起点是(0,0)】。

我们可以发现(0,0)~(n,0)和(0,0)~(0,m)上都是1,所以我们肯定选择走这条路,而且要走长的那条,不过我们只走(0,0)~(n-1,0)或(0,0)~(0,m-1),因为(n,0)或(0,m)接下来要算到,反正没有太大影响,那么这一段的权值和为max(n,m)。接下来就是剩下的那一段了,显然往上和往左走肯定是亏的,所以我们继续往终点走,而这一段的路径则为C(max(n,m)+i,i)【0≤i≤min(n,m)】的和。看不懂的话看看样例,如下图:                       

上图的1和3就是C(2+0,0)和C(2+1,1)的值,其实只要把矩阵顺时针旋转45°就是杨辉三角了,而C(max(n,m)+i,i)【0≤i≤min(n,m)】的和就是C(n+m+1,min(n,m)),证明略。所以这个矩阵的最短路径则为max(n,m)+C(n+m+1,min(n,m))。这题数据范围是比较猎奇的,但是毋庸置疑的是暴力求组合数取模肯定是不行的啊,这里我们就要用到lucas定理了,lucas定理即C(a,b)mod p=C(a/p,b/p)*C(a mod p,b mod p),然后就用费马小定理+乘法逆元求一下组合数就行辣,然后这题就写完了,代码很短也很容易理解。

const
p=;
var
n,m,t:int64; function qp(a,b:int64):int64;//快速幂
var
y,t:int64;
begin
y:=a mod p;t:=;
while b> do
begin
if b and = then t:=t*y mod p;
y:=y*y mod p;
b:=b>>;
end;
exit(t mod p);
end; function C(a,b:int64):int64;//费马小定理+乘法逆元
var
i:longint;
aa,bb:int64;
begin
if b>a then exit();
if b>a-b then b:=a-b;
aa:=;bb:=;
for i:= to b do
begin
aa:=aa*(a-i+) mod p;
bb:=bb*i mod p;
end;
exit(aa*qp(bb,p-) mod p);
end; function lucas(a,b:int64):int64;//lucas定理
begin
exit(C(a div p,b div p)*C(a mod p,b mod p)mod p);
end; begin
readln(n,m);
if n>m then
begin
t:=n;n:=m;m:=t;
end;
writeln((m+lucas(n+m+,n))mod p);
end.

[CodeVs1515]跳(lucas定理+费马小定理)的更多相关文章

  1. bzoj 1951 lucas crt 费马小定理

    首先假设输入的是n,m 我们就是要求m^(Σ(c(n,i) i|n)) mod p 那么根据费马小定理,上式等于 m^(Σ(c(n,i) i|n) mod  (p-1)) mod p 那么问题的关键就 ...

  2. 数论初步(费马小定理) - Happy 2004

    Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...

  3. BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...

  4. hdu 4704 Sum【组合数学/费马小定理/大数取模】By cellur925

    首先,我们珂以抽象出S函数的模型:把n拆成k个正整数,有多少种方案? 答案是C(n-1,k-1). 然后发现我们要求的是一段连续的函数值,仔细思考,并根据组合数的性质,我们珂以发现实际上答案就是在让求 ...

  5. CodeForces 300C Beautiful Numbers(乘法逆元/费马小定理+组合数公式+高速幂)

    C. Beautiful Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  6. 简记乘法逆元(费马小定理+扩展Euclid)

    乘法逆元 什么是乘法逆元? 若整数 \(b,m\) 互质,并且\(b|a\) ,则存在一个整数\(x\) ,使得 \(\frac{a}{b}\equiv ax\mod m\) . 称\(x\) 是\( ...

  7. 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  8. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

  9. [bzoj1951] [Sdoi2010]古代猪文 费马小定理+Lucas定理+CRT

    Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...

随机推荐

  1. 03-运行第一个docker容器

    环境选择 容器需要管理工具.runtime 和操作系统,我们的选择如下: 1.管理工具 - Docker Engine因为 Docker 最流行使用最广泛. 2.runtime - runc Dock ...

  2. 451. Swap Nodes in Pairs【LintCode java】

    Description Given a linked list, swap every two adjacent nodes and return its head. Example Given 1- ...

  3. CsvHelper文档-3写

    CsvHelper文档-3写 不用做任何设置,默认的情况下,csvhelper就可以很好的工作了.如果你的类的属性名称和csv的header名称匹配,那么可以按照下面的例子写入: var record ...

  4. AirSim的搭建和使用

    由于自己使用设备拍摄的数据质量太差,所以决定使用AirSim这个框架来生成数据.之所以使用这个框架,是因为之前同事用其生成了一些有效数据. 当然,我是不可能把我搭建的步骤一一写出来的,一来是因为太麻烦 ...

  5. 华为ensp使用

    网络学习目录 AR是() Auto:自动线 copper:双绞线缆  serial:串行线  pos: 光纤  E1:    ATM:    CTL:       STA:    PC:    MCS ...

  6. [笔记] centos6.6编译安装httpd2.4.10

    系统安装包是CentOS-6.6-x86_64-minimal.iso 查看一下uname信息 [root@localhost ~]# uname -a Linux localhost.localdo ...

  7. Phonegap 环境配置

    目前要开发 Web App 还是有比较多的选择的 如 Phonegap.MUI.AppCan,接下来以 Web前端开发工程师 的角度来一个 Phonegap 的 First Blood 一.开发环境: ...

  8. eclipse连接SQL2008R2

    最近又开始写JAVA WEB了,想起连接数据库就麻烦,但是通过一天的努力我居然弄好了,很有成就感. 我用的是 SQL Server 2008 R2  +  eclipse 首先要成功的安装好SQL最终 ...

  9. Python学习笔记(二)--变量和数据类型

    python中的数据类型 python中什么是变量 python中定义字符串 raw字符串与Unicode字符串 python中的整数和浮点数 python中的bool类型 --- python中的数 ...

  10. 团队作业4——第一次项目冲刺(Alpha版本)第二次

    一.会议内容 各人进行下一步工作 发现沟通流程问题并解决 二.各人工作 成员 计划任务 遇见难题 贡献比 塗家瑜(组长) 后端逻辑处理 无 1 张新磊 数据库搭建 无 1 姚燕彬 测试计划编写 无 1 ...