题目
Input
第一行一个整数n
接下来一个n个数,用空格隔开,即序列A
Output
一行一个整数,为答案
Sample Input
【样例输入1】
2
1 2
【样例输入2】
5 1401 110 4
17 12
Sample Output
【样例输出1】
499122177
【样例输出2】
391092926
Data Constraint
对于30%的数据,n<=9
对于另外10%的数据,所有的A[i]均相等
对于另外20%的数据,A[2~n]均相等
对于100%的数据,n<=100000,1<=A[i]<=5000
Hint
p有两个排列,{1, 2}与{2,1}
当p为{1,2}时,式子为1/(1*3)=1/2
当p为{2,1}时,式子为1/(2*3)=1/6
和为1/2,mod 998244353意义下为499122177
题解
在一番奇异的推解后发现答案是所有a[i]的乘积分之一(并不会证明3)
贴代码
const md=998244353;
var
a,f,g,cc,sum:array[0..100005]of int64;
i,j,n:longint;
k,l,x,y,z,ans,tot:int64;
function quickmi(x,y:int64):int64;
var
a,b,p:int64;
begin
a:=x;
b:=1;
p:=y;
while p>0 do
begin
if p mod 2=1 then b:=(b*a) mod md;
a:=(a*a) mod md;
p:=p div 2;
end;
exit(b);
end;
begin
//assign(input,'t1.in'); reset(input);
readln(n);
for i:=1 to n do read(a[i]);
readln;
ans:=1;
for i:=1 to n do ans:=(ans*a[i]) mod md;
ans:=quickmi(ans,md-2);
writeln(ans);
end.