← Home
For problem statement at 1000-1999/1100-1199/1160-1169/1166/problemD.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1160-1169/1166/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var q int
	fmt.Fscan(reader, &q)

	for i := 0; i < q; i++ {
		var a, b, m uint64
		fmt.Fscan(reader, &a, &b, &m)

		if a == b {
			fmt.Fprintf(writer, "1 %d\n", a)
			continue
		}

		found := false
		for k := 2; k <= 50; k++ {
			p := uint64(1) << (k - 2)
			if b/p < a+1 {
				break
			}
			minVal := (a + 1) * p
			diff := b - minVal
			req := diff / p
			if diff%p != 0 {
				req++
			}
			
			if req <= m-1 {
				found = true
				fmt.Fprintf(writer, "%d %d ", k, a)
				delta := diff
				x := make([]uint64, k+1)
				x[1] = a
				sum := a
				for j := 2; j <= k; j++ {
					exp := k - j - 1
					if exp < 0 {
						exp = 0
					}
					c := uint64(1) << exp
					add := delta / c
					if add > m-1 {
						add = m - 1
					}
					r := uint64(1) + add
					delta -= add * c
					x[j] = sum + r
					sum += x[j]
					if j == k {
						fmt.Fprintf(writer, "%d\n", x[j])
					} else {
						fmt.Fprintf(writer, "%d ", x[j])
					}
				}
				break
			}
		}
		if !found {
			fmt.Fprintln(writer, "-1")
		}
	}
}