For problem statement at 1000-1999/1800-1899/1860-1869/1866/problemM.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1860-1869/1866/verifierM.go ends with test 2 failed: expected 5 but got 4
input:
2
50 50
expected:
5
actual:
4
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func modPow(b, e, m int64) int64 {
res := int64(1)
b %= m
for e > 0 {
if e&1 == 1 {
res = res * b % m
}
b = b * b % m
e >>= 1
}
return res
}
func modInv(a, m int64) int64 {
return modPow(a, m-2, m)
}
func main() {
in := bufio.NewReader(os.Stdin)
var N int64
fmt.Fscan(in, &N)
P := make([]int64, N+1)
for i := int64(1); i <= N; i++ {
fmt.Fscan(in, &P[i])
}
const MOD int64 = 998244353
inv100 := modInv(100, MOD)
current_const := int64(0)
current_ce := int64(0)
current_g := make(map[int64]int64)
for hh := N - 1; hh >= 0; hh-- {
x := hh + 1
r := P[x] * inv100 % MOD
q := (MOD + 1 - r) % MOD
q_delta := q
if x == N {
q_delta = 0
}
var prob1 int64
if x == 1 {
prob1 = r
} else {
prob1 = r * q % MOD
}
d := (MOD + 1 - prob1) % MOD
var const_u, ce_u int64
u_g := make(map[int64]int64)
if x == 1 {
} else {
p2 := modPow(r, 2, MOD)
coeff_S := q * p2 % MOD
mm := x - 2
var pm int64 = 1
if mm > 0 {
pm = modPow(r, mm, MOD)
}
tmp := coeff_S * pm % MOD
ce_u = ((MOD - tmp) + modPow(r, x, MOD)) % MOD
if coeff_S != 0 {
u_g[r] = coeff_S
}
}
const_right := (1 + const_u + q_delta*current_const%MOD) % MOD
coeff_e := (ce_u + q_delta*current_ce%MOD) % MOD
coeff_self := int64(0)
coeff_g := make(map[int64]int64)
for s, cof := range u_g {
coeff_g[s] = (coeff_g[s] + cof) % MOD
}
for s, cof := range current_g {
coeff_self = (coeff_self + q_delta*cof%MOD) % MOD
coeff_g[s] = (coeff_g[s] + q_delta*cof%s * s % MOD) % MOD
}
den := (d - coeff_self + MOD) % MOD
inv_den := modInv(den, MOD)
current_const = const_right * inv_den % MOD
current_ce = coeff_e * inv_den % MOD
current_g = make(map[int64]int64)
for s, cof := range coeff_g {
if cof != 0 {
current_g[s] = cof * inv_den % MOD
}
}
}
fmt.Println(current_const)
}
```