← Home
For problem statement at 2000-2999/2000-2099/2050-2059/2056/problemF1.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2050-2059/2056/verifierF1.go ends with wrong answer on test 2
input:
2
4 6
1111
5 5
10001

expected:
4
6
got:
5
6
exit status 1 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 t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		var k_bits, m int
		fmt.Fscan(reader, &k_bits, &m)
		var s string
		fmt.Fscan(reader, &s)

		w := 0
		for j := 0; j < len(s); j++ {
			if s[j] == '1' {
				w++
			}
		}

		if w == 0 {
			fmt.Fprintln(writer, 0)
			continue
		}

		S := make([][]int, w+1)
		for j := 0; j <= w; j++ {
			S[j] = make([]int, w+1)
		}
		S[0][0] = 1
		for i := 1; i <= w; i++ {
			for j := 1; j <= i; j++ {
				S[i][j] = ((j & 1) * S[i-1][j]) ^ S[i-1][j-1]
			}
		}

		ans := 0
		for x := 0; x < m; x++ {
			parity := 0
			for k := 1; k <= w; k++ {
				if S[w][k] == 1 {
					if (x & (k - 1)) == (k - 1) {
						parity ^= 1
					}
				}
			}
			if parity == 1 {
				ans ^= x
			}
		}
		fmt.Fprintln(writer, ans)
	}
}