1010 Sum Plus Product
题目大意:给定n个数a1,a2,a3......an,每次随机选择两个数合并成两数的和与积相加,求最后剩余数字的期望,答案对998244353取模.
#include<bits/stdc++.h>
using namespace std;
template <typename tn>void read(tn &n){
tn f=1,t=0;char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
while (isdigit(ch)) t=t*10+ch-'0',ch=getchar();
n=f*t;
}
inline void out(int x){
if(x>9)out(x/10);
putchar(x%10+'0');
}
int ex_gcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;
return a;
}
int r=ex_gcd(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return r;
}
int mod_reverse(int a,int b){
int d,x,y;
d=ex_gcd(a,b,x,y);
if(d==1)return (x%b+b)%b;
else return -1;
}
int T,n;
long long Ans,a,P,Q,mo=998244353;
int main(){
read(T);
while(T--){
read(n);
Ans=0;
for(int i=1;i<=n;++i){
read(a);
Ans=Ans*a+Ans+a;
if(Ans>=mo)Ans%=mo;
}
cout<<Ans<<endl;
}
return 0;
}