样例1输出3,样例2输出为负
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[100010], b[100010], p[100010], _1_p[100010];
const int mod = 998244353;
long long niyuan(int x)
{
long long ans = 1, tt = mod - 2;
while (tt)
{
if (tt & 1) ans = 1ll * ans * x % mod;
x = 1ll * x * x % mod;
tt >>= 1;
}
return ans;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i] >> b[i];
p[i] = 1ll * a[i] * niyuan(b[i]) % mod;
_1_p[i] = 1ll * (b[i] - a[i]) * niyuan(b[i]) % mod;
}
int A = 1, C = 0, temp = 1;
for (int i = 1; i <= n; i++)
{
C = (C + temp * p[i] % mod) % mod;
temp = temp * _1_p[i] % mod;
A = (A + temp) % mod;
}
cout << 1ll * A * niyuan((1 - C + mod) % mod) % mod << endl;
return 0;
}