← 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? 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')
	}
}