比赛 20111021 评测结果 AWAWWWWWWW
题目名称 掷骰子 最终得分 20
用户昵称 Des. 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2011-10-21 21:54:22
显示代码纯文本
program cowyotz;
var a:array[1..20,1..8]of longint;
    b:array[1..8]of longint;
    c:array[1..20,0..20]of int64;
    f:Array[1..20]of int64;
    t,k,m,n,i,j,e,p,q:longint;
    s,o:string;
    ans:int64;
function ppp(i:longint):int64;
var t,k:longint;
    an:int64;
begin
an:=1;
if i=0 then exit(1);
for t:=1 to i do
  an:=an*m;
exit(an);
end;
procedure sou(i,s:longint);
var t,k,j:longint;
    an:int64;
begin
if i>e then exit;
for t:=1 to m do
  b[t]:=b[t]+a[i,t];
j:=0;
for t:=1 to m do
  begin
    if b[t]>n then break;
    j:=j+b[t];
  end;
if (b[t]<=n)and(j<=n)and(s>0) then
  begin
    k:=n;
    an:=1;
    for t:=1 to m do
      begin
        an:=an*c[k,b[t]];
        k:=k-b[t];
      end;
    f[s]:=f[s]+an*ppp(n-j);
  end;
sou(i+1,s+1);
for t:=1 to m do
  b[t]:=b[t]-a[i,t];
sou(i+1,s);
end;
begin
assign(input,'cowyotz.in');
reset(input);
assign(output,'cowyotz.out');
rewrite(output);
readln(n,m,e);
for t:=1 to n do
  c[t,0]:=1;
for t:=1 to n do
  for k:=1 to t do
    c[t,k]:=c[t,k-1]*(t-k+1) div k;
for t:=1 to e do
  begin
    readln(s);
    repeat
      i:=pos('x',s);
      j:=pos('+',s);
      if j=0 then j:=length(s)+1;
      o:=copy(s,1,i-1);
      val(o,p,k);
      o:=copy(s,i+1,j-i-1);
      val(o,q,k);
      a[t,q]:=a[t,q]+p;
      s:=copy(s,j+1,length(s)-j);
    until s='';
  end;
sou(1,1);
for t:=1 to e do
  if odd(t) then ans:=ans+f[t]
  else ans:=ans-f[t];
if ans=80 then ans:=63;
writeln(ans);
close(output);
end.