HDU 4828 Catalan+逆元法
2015-09-12 23:09
253 查看
题意简述
给定一个2∗N的矩阵,把1到2N这些数依次放进去,求使每行每列都递增的方案数(对109+7取模)。
分析
扯一句——本题来自2014年百度之星程序设计大赛 - 初赛(第一轮),据说也是许多IT公司的面试题。
将在第一行放数视为入栈,将在第二行放数视为出栈,即可保证两个递增条件。
问题转化为求第n项Catalan数。
Catalan数入门
逆元法入门
代码实现
给定一个2∗N的矩阵,把1到2N这些数依次放进去,求使每行每列都递增的方案数(对109+7取模)。
分析
扯一句——本题来自2014年百度之星程序设计大赛 - 初赛(第一轮),据说也是许多IT公司的面试题。
将在第一行放数视为入栈,将在第二行放数视为出栈,即可保证两个递增条件。
问题转化为求第n项Catalan数。
Catalan数入门
逆元法入门
代码实现
const mo=1000000007; var i,n,k,cases,ans,tmp:longint; fac:array[0..2000000] of int64; function ni(t:longint):int64; var k:longint; begin if t=1 then begin ni:=1;exit;end; k:=mo div t+1; ni:=k*ni(k*t-mo) mod mo; end; begin fac[0]:=1; for i:=1 to 2000000 do fac[i]:=fac[i-1]*i mod mo; readln(cases); for i:=1 to cases do begin readln(n);tmp:=ni(fac ); ans:=fac[2*n]*tmp mod mo*tmp mod mo*ni(n+1) mod mo; writeln('Case #',i,':'); writeln(ans); end; end.
相关文章推荐
- lintcode-将整数A转换为B-181
- 小火箭升空动画大全解
- hdu 3652 数位dp
- 第一篇 PHP开发环境搭建以及多站点配置(基于windows 7系统)
- git服务器gitlab之搭建和使用
- java的一些语法基础(二)
- 位运算总结&拾遗
- 风机桨叶故障诊断(五) 修改隐含层神经元个数的尝试
- 批量杀死多个进程 linux kill
- 线程(Thread)、线程池(ThreadPool)技术
- ipv6现状,加英文的中括号访问, ipv6测试http://test-ipv6.com
- 约梭芬杀人法(2015年9月12日)
- ipv6现状,加英文的中括号访问, ipv6测试http://test-ipv6.com
- BZOJ AC300题留念
- 数据挖掘中的数据
- TestLink和Mantis的集成
- 最小化安装的CentOS安装图形界面
- 带环链表
- VB6.0 Select Case语句
- Android学习记录:获取联系人