我這種數學渣渣。。。
莫名發現好像就是直接相乘的結果。。。(要是在考場上我絕壁直接用這個結論了,但是作爲一個剛剛學了數學歸納法的沙茶。。。我決定證明一下。。。)
1 兩個數a,b 顯然1/a(a+b)+1/b(a+b) 通分一下顯然就是a*b
2 三個數字 我們枚舉最後一個數字 則爲1/ab(a+b+c)+1/bc(a+b+c)+1/ac(a+b+c) 然後一樣通分一下就=a*b*c了
3顯然這樣還不能算嚴格證明,但是規律已經很顯然了。。。所以就這麼找吧。。
#include <cstdio>
#include <cmath>
#include <ctime>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <vector>
#define pb push_back
#define forup(i,a,b) for(int i=(a);i<=(b);i++)
#define fordown(i,a,b) for(int i=(a);i>=(b);i--)
#define maxn 100005
#define maxm 100005
#define INF 1070000000
#define MOD 998244353
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template<class T> inline
void read(T& num){ num = 0; bool f = true;char ch = getchar(); while(ch < '0' || ch > '9') { if(ch == '-') f = false;ch = getchar();} while(ch >= '0' && ch <= '9') {num = num * 10 + ch - '0';ch = getchar();} num = f ? num: -num; }
int out[100];
template<class T> inline
void write(T x,char ch){ if (x==0) {putchar('0'); putchar(ch); return;} if (x<0) {putchar('-'); x=-x;}int num=0; while (x){ out[num++]=(x%10); x=x/10;} fordown(i,num-1,0) putchar(out[i]+'0'); putchar(ch); }
/*==================split line==================*/
ll mi(ll p,int ci)
{ if(ci==0) return 1ll;if(ci==1) return p%MOD; ll x=mi(p,ci>>1);x=(x*x)%MOD;if(ci%2==1) x=(x*p)%MOD;return x%MOD;}
int main()
{ int n;
cin>>n;
ll ans=1ll;
while(n--)
{ll x;
read(x);
ans=(ans*x)%MOD;
}
cout<<mi(ans,MOD-2);
return 0;
}