← Home
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? ```go
package main

import (
	"bufio"
	"io"
	"os"
)

func writeInt(out *bufio.Writer, n int) {
	if n == 0 {
		out.WriteByte('0')
		return
	}
	var buf [20]byte
	i := 19
	for n > 0 {
		buf[i] = byte(n%10 + '0')
		n /= 10
		i--
	}
	out.Write(buf[i+1:])
}

func main() {
	input, err := io.ReadAll(os.Stdin)
	if err != nil {
		return
	}

	start := 0
	for start < len(input) && (input[start] != '0' && input[start] != '1') {
		start++
	}
	end := start
	for end < len(input) && (input[end] == '0' || input[end] == '1') {
		end++
	}

	if start == end {
		return
	}

	sBytes := input[start:end]

	carry := 0
	power := 0
	L := len(sBytes)

	powers := make([]int, 0, L/2+2)
	signs := make([]byte, 0, L/2+2)

	for i := L - 1; i >= 0 || carry > 0; i-- {
		bit := carry
		if i >= 0 {
			bit += int(sBytes[i] - '0')
		}

		if bit%2 != 0 {
			nextBit := 0
			if i-1 >= 0 {
				nextBit = int(sBytes[i-1] - '0')
			}

			if nextBit == 1 {
				powers = append(powers, power)
				signs = append(signs, '-')
				carry = 1
			} else {
				powers = append(powers, power)
				signs = append(signs, '+')
				carry = 0
			}
		} else {
			carry = bit / 2
		}
		power++
	}

	out := bufio.NewWriterSize(os.Stdout, 1024*1024)
	writeInt(out, len(powers))
	out.WriteByte('\n')
	for i := 0; i < len(powers); i++ {
		out.WriteByte(signs[i])
		out.WriteString("2^")
		writeInt(out, powers[i])
		out.WriteByte('\n')
	}
	out.Flush()
}
```