For problem statement at 0-999/100-199/170-179/175/problemD.txt this is a correct solution, but verifier at 0-999/100-199/170-179/175/verifierD.go ends with case 32 failed: expected -0.000000 got 0.000000
exit status 1 can you fix the verifier? ```go
package main
import (
"fmt"
)
func getS(hp, l, r, p int) []float64 {
if p == 100 {
return nil
}
dp := make([]float64, hp)
dp[0] = 1.0
S := make([]float64, 0, 20000)
S = append(S, 1.0)
probMiss := float64(p) / 100.0
probHit := 1.0 - probMiss
probEach := probHit / float64(r-l+1)
sumDp := make([]float64, hp+1)
for k := 1; ; k++ {
for i := 0; i < hp; i++ {
sumDp[i+1] = sumDp[i] + dp[i]
}
nextDp := make([]float64, hp)
currentS := 0.0
for h := 0; h < hp; h++ {
val := dp[h] * probMiss
maxY := h - l
if maxY >= 0 {
minY := h - r
if minY < 0 {
minY = 0
}
val += (sumDp[maxY+1] - sumDp[minY]) * probEach
}
nextDp[h] = val
currentS += val
}
S = append(S, currentS)
dp = nextDp
if currentS < 1e-13 {
break
}
}
return S
}
func main() {
var hpV, dtV, lV, rV, pV int
var hpE, dtE, lE, rE, pE int
if _, err := fmt.Scan(&hpV, &dtV, &lV, &rV, &pV, &hpE, &dtE, &lE, &rE, &pE); err != nil {
return
}
if pV == 100 {
fmt.Printf("%.6f\n", 0.0)
return
}
if pE == 100 {
fmt.Printf("%.6f\n", 1.0)
return
}
SV := getS(hpE, lV, rV, pV)
SE := getS(hpV, lE, rE, pE)
ans := 0.0
for k := 1; k < len(SV); k++ {
probK := SV[k-1] - SV[k]
L := ((k-1)*dtV + dtE - 1) / dtE
if L < len(SE) {
ans += probK * SE[L]
}
}
fmt.Printf("%.6f\n", ans)
}
```