小a的强迫症
题目大意
有
数据范围
题解
假设当前排列到了第
我们先拿一颗第
由于
Code(Pascal)
mo=998244353;
var
ny,num,jc:array[0..560000] of int64;
lj,ans,o,p,lyhsb,n,ma:int64;
i:longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a)
else exit(b);
end;
function ksm(o,cqy:int64):int64;
begin
ksm:=1;
while cqy>0 do
begin
if cqy mod 2=1 then ksm:=ksm*o mod mo;
o:=(o*o) mod mo;
cqy:=cqy div 2;
end;
end;
begin
readln(n);
for i:=1 to n do
begin
read(num[i]);
lyhsb:=lyhsb+num[i];
end;
jc[0]:=1;
ny[0]:=1;
o:=1;
for i:=1 to lyhsb do
begin
o:=o*i mod mo;
jc[i]:=o;
ny[i]:=ksm(o,mo-2);
end;
o:=num[1];
ans:=1;
for i:=2 to n do
begin
ans:=ans*jc[o+num[i]-1] mod mo;
ans:=ans*ny[o] mod mo;
ans:=ans*ny[num[i]-1] mod mo;
o:=o+num[i];
end;
writeln(ans);
end.