For problem statement at 1000-1999/1900-1999/1970-1979/1977/problemC.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1970-1979/1977/verifierC.go ends with case 1 runtime error: exit status 2
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.main()
/tmp/build-3739134780/solution.go:52 +0x490
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func gcd(a, b int64) int64 {
for b != 0 {
a, b = b, a % b
}
return a
}
func lcm(a, b int64) int64 {
return a / gcd(a, b) * b
}
func getDivisors(x int64) []int64 {
var res []int64
for i := int64(1); i*i <= x; i++ {
if x%i == 0 {
res = append(res, i)
if i != x/i {
res = append(res, x/i)
}
}
}
sort.Slice(res, func(i, j int) bool { return res[i] < res[j] })
return res
}
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for tt := 0; tt < t; tt++ {
var n int
fmt.Fscan(in, &n)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
hasDominating := false
var m int64
for k := 0; k < n; k++ {
cand := a[k]
ok := true
for i := 0; i < n; i++ {
if cand%a[i] != 0 {
ok = false
break
}
}
if ok {
hasDominating = true
m = cand
break
}
}
if !hasDominating {
fmt.Println(n)
continue
}
v := make(map[int64]bool)
for _, x := range a {
v[x] = true
}
divs := getDivisors(m)
maxLen := 0
for _, d := range divs {
if v[d] {
continue
}
var l int64
cnt := 0
for _, x := range a {
if d%x == 0 {
cnt++
if cnt == 1 {
l = x
} else {
l = lcm(l, x)
}
}
}
if cnt > 0 && l == d {
if cnt > maxLen {
maxLen = cnt
}
}
}
fmt.Println(maxLen)
}
}
```