For problem statement at 1000-1999/1700-1799/1750-1759/1750/problemF.txt this is a correct solution, but verifier at 1000-1999/1700-1799/1750-1759/1750/verifierF.go ends with case 2 failed: expected 0 got 1
input:
5 3
exit status 1 can you fix the verifier? package main
import (
"fmt"
)
func main() {
var n, m int
if _, err := fmt.Scan(&n, &m); err != nil {
return
}
if n == 1 {
fmt.Println(1 % m)
return
}
MOD := int64(m)
R := make([]int64, n+1)
SumM := make([]int64, 2*n+2)
PrefSum := make([]int64, 2*n+2)
pow2 := int64(2) % MOD
for length := 1; length <= n; length++ {
if length == 1 {
R[1] = 1 % MOD
SumM[2] = (SumM[2] + R[1]) % MOD
} else if length == 2 {
R[2] = 1 % MOD
SumM[4] = (SumM[4] + R[2]) % MOD
} else {
R[length] = pow2
pow2 = (pow2 * 2) % MOD
for L := 1; L < length; L++ {
K := length - 2*L - 1
cur_S := int64(0)
if K >= 1 {
cur_S = (R[L] * PrefSum[K]) % MOD
}
R[length] = (R[length] - cur_S + MOD) % MOD
SumM[length+L] = (SumM[length+L] + cur_S) % MOD
}
SumM[2*length] = (SumM[2*length] + R[length]) % MOD
}
PrefSum[length+1] = (PrefSum[length] + SumM[length+1]) % MOD
}
fmt.Println(R[n] % MOD)
}