For problem statement at 0-999/100-199/130-139/132/problemD.txt this is a correct solution, but verifier at 0-999/100-199/130-139/132/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
)
func main() {
b, err := io.ReadAll(os.Stdin)
if err != nil {
return
}
var s []byte
for _, ch := range b {
if ch == '0' || ch == '1' {
s = append(s, ch)
}
}
n := len(s)
if n == 0 {
return
}
carry := 0
type term struct {
sign byte
pow int
}
var res []term
for i := 0; i < n || carry > 0; i++ {
var bit int
if i < n {
bit = int(s[n-1-i] - '0')
}
sum := bit + carry
if sum == 0 {
carry = 0
} else if sum == 1 {
var nextBit int
if i+1 < n {
nextBit = int(s[n-1-(i+1)] - '0')
}
if nextBit == 1 {
res = append(res, term{sign: '-', pow: i})
carry = 1
} else {
res = append(res, term{sign: '+', pow: i})
carry = 0
}
} else if sum == 2 {
carry = 1
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
out.WriteString(strconv.Itoa(len(res)) + "\n")
for _, t := range res {
out.WriteByte(t.sign)
out.WriteString("2^")
out.WriteString(strconv.Itoa(t.pow))
out.WriteByte('\n')
}
}