For problem statement at 0-999/600-699/690-699/691/problemC.txt this is a correct solution, but verifier at 0-999/600-699/690-699/691/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"bytes"
"io"
"os"
"strconv"
"strings"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
s := bytes.TrimSpace(data)
if len(s) == 0 {
return
}
dot := bytes.IndexByte(s, '.')
intR := len(s)
fracL := len(s)
if dot != -1 {
intR = dot
fracL = dot + 1
}
intStart := -1
for i := 0; i < intR; i++ {
if s[i] != '0' {
intStart = i
break
}
}
var out strings.Builder
out.Grow(len(s) + 20)
if intStart != -1 {
exponent := intR - intStart - 1
lastNZFrac := -1
for i := len(s) - 1; i >= fracL; i-- {
if s[i] != '0' {
lastNZFrac = i
break
}
}
out.WriteByte(s[intStart])
if lastNZFrac != -1 {
if intStart+1 < intR || fracL <= lastNZFrac {
out.WriteByte('.')
if intStart+1 < intR {
out.Write(s[intStart+1 : intR])
}
if fracL <= lastNZFrac {
out.Write(s[fracL : lastNZFrac+1])
}
}
} else {
lastNZInt := intStart
for i := intR - 1; i >= intStart; i-- {
if s[i] != '0' {
lastNZInt = i
break
}
}
if intStart+1 <= lastNZInt {
out.WriteByte('.')
out.Write(s[intStart+1 : lastNZInt+1])
}
}
if exponent != 0 {
out.WriteByte('E')
out.WriteString(strconv.Itoa(exponent))
}
} else {
firstNZFrac := -1
for i := fracL; i < len(s); i++ {
if s[i] != '0' {
firstNZFrac = i
break
}
}
if firstNZFrac == -1 {
out.WriteByte('0')
} else {
lastNZFrac := firstNZFrac
for i := len(s) - 1; i >= firstNZFrac; i-- {
if s[i] != '0' {
lastNZFrac = i
break
}
}
out.WriteByte(s[firstNZFrac])
if firstNZFrac+1 <= lastNZFrac {
out.WriteByte('.')
out.Write(s[firstNZFrac+1 : lastNZFrac+1])
}
exponent := -(firstNZFrac - fracL + 1)
if exponent != 0 {
out.WriteByte('E')
out.WriteString(strconv.Itoa(exponent))
}
}
}
w := bufio.NewWriterSize(os.Stdout, 1<<20)
w.WriteString(out.String())
w.Flush()
}