For problem statement at 0-999/500-599/510-519/513/problemC.txt this is a correct solution, but verifier at 0-999/500-599/510-519/513/verifierC.go ends with case 1 failed
expected:
5.5000000000
got:
5.500000000000
exit status 1 can you fix the verifier? ```go
package main
import (
"fmt"
"math/big"
)
func max(a, b int64) int64 {
if a > b {
return a
}
return b
}
func main() {
var n int
fmt.Scan(&n)
var L [5]int
var R [5]int
for i := 0; i < n; i++ {
fmt.Scan(&L[i], &R[i])
}
var ss [5]int64
var T big.Int
T.SetInt64(1)
for i := 0; i < n; i++ {
ss[i] = int64(R[i] - L[i] + 1)
t := big.NewInt(ss[i])
T.Mul(&T, t)
}
var total big.Int
for v := 1; v <= 10000; v++ {
var a [5]int64
var b [5]int64
for i := 0; i < n; i++ {
low := max(int64(v), int64(L[i]))
if low > int64(R[i]) {
a[i] = 0
} else {
a[i] = int64(R[i]) - low + 1
}
b[i] = ss[i] - a[i]
}
var prodB big.Int
prodB.SetInt64(1)
for i := 0; i < n; i++ {
prodB.Mul(&prodB, big.NewInt(b[i]))
}
var sumTerm big.Int
for j := 0; j < n; j++ {
var prodEx big.Int
prodEx.SetInt64(1)
for i := 0; i < n; i++ {
if i != j {
prodEx.Mul(&prodEx, big.NewInt(b[i]))
}
}
var term big.Int
term.Mul(big.NewInt(a[j]), &prodEx)
sumTerm.Add(&sumTerm, &term)
}
var inner big.Int
inner.Set(&T)
inner.Sub(&inner, &prodB)
inner.Sub(&inner, &sumTerm)
total.Add(&total, &inner)
}
rat := new(big.Rat)
rat.SetFrac(&total, &T)
f, _ := rat.Float64()
fmt.Printf("%.12f\n", f)
}
```