比赛 HAOI2009 模拟试题3 评测结果 AAAAAAAAAA
题目名称 诸侯安置 最终得分 100
用户昵称 ceeji 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2009-04-23 11:17:08
显示代码纯文本
var i,j,k,n,l,s:longint;
    f:array[1..200,1..200] of longint;
function make(p:longint):longint;
  begin
    if odd(p) then make:=p else make:=p-1;
  end;
begin
  assign(input,'empire.in');reset(input);
  assign(output,'empire.out');rewrite(output);
  readln(n,k);
  if k=0 then begin writeln(1);close(output);halt
end;
  if k>=2*n-1 then begin writeln(0);
close(output);halt;
end;
  for i:=1 to 2*n-1 do
    if odd(i) then f[i,1]:=i else f[i,1]:=i-1;
  for i:=1 to 2*n-1 do
    for j:=2 to i do
      for l:=1 to i-j+1 do
        f[i,j]:=(f[i,j]+f[i-l,j-1]*(make(i)-j+1)) mod 504;
  i:=2*n-1;
  if k=1 then begin writeln((i*(i+1) div 2-i div 2) mod 504);
close(output);halt end else
    for i:=k to 2*n-1 do inc(s,f[i,k]);
  writeln(s mod 504);
  close(input);
close(output);
end.