For problem statement at 1000-1999/1200-1299/1220-1229/1220/problemB.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1220-1229/1220/verifierB.go ends with runtime error: exit status 2
output:
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.main()
/tmp/build-4087638239/solution.go:68 +0x458
exit status 1 can you fix the verifier? package main
import (
"bufio"
"bytes"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int64 {
n := int64(0)
sign := int64(1)
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
idx++
}
if idx < len(data) && data[idx] == '-' {
sign = -1
idx++
}
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
n = n*10 + int64(data[idx]-'0')
idx++
}
return n * sign
}
n := int(nextInt())
M := make([][]int64, n)
for i := 0; i < n; i++ {
row := make([]int64, n)
for j := 0; j < n; j++ {
row[j] = nextInt()
}
M[i] = row
}
m12 := M[0][1]
m13 := M[0][2]
m23 := M[1][2]
val := (m12 * m13) / m23
isqrt := func(x int64) int64 {
if x <= 0 {
return 0
}
lo, hi := int64(1), int64(1_000_000_000)
var ans int64
for lo <= hi {
mid := (lo + hi) >> 1
if mid <= x/mid {
ans = mid
lo = mid + 1
} else {
hi = mid - 1
}
}
return ans
}
a1 := isqrt(val)
a := make([]int64, n)
a[0] = a1
for i := 1; i < n; i++ {
a[i] = M[0][i] / a1
}
var out bytes.Buffer
for i := 0; i < n; i++ {
if i > 0 {
out.WriteByte(' ')
}
out.WriteString(strconv.FormatInt(a[i], 10))
}
out.WriteByte('\n')
w := bufio.NewWriter(os.Stdout)
w.Write(out.Bytes())
w.Flush()
}