题意简述
给定一个
2∗N
的矩阵,把
1
到
分析
扯一句——本题来自2014年百度之星程序设计大赛 - 初赛(第一轮),据说也是许多IT公司的面试题。
将在第一行放数视为入栈,将在第二行放数视为出栈,即可保证两个递增条件。
问题转化为求第
n
项
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[n]);
ans:=fac[2*n]*tmp mod mo*tmp mod mo*ni(n+1) mod mo;
writeln('Case #',i,':');
writeln(ans);
end;
end.