For problem statement at 1000-1999/1900-1999/1980-1989/1986/problemG1.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1980-1989/1986/verifierG1.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func gcd(a, b int32) int32 {
for b != 0 {
a, b = b, a%b
}
return a
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
if _, err := fmt.Fscan(in, &t); err != nil {
return
}
maxN := int32(100005)
divs := make([][]int32, maxN)
for i := int32(1); i < maxN; i++ {
for j := i; j < maxN; j += i {
divs[j] = append(divs[j], i)
}
}
C := make([]map[int32]int32, maxN)
modifiedX := make([]int32, 0, maxN)
for tc := 0; tc < t; tc++ {
var n int32
fmt.Fscan(in, &n)
modifiedX = modifiedX[:0]
var ans int64
for i := int32(1); i <= n; i++ {
var p int32
fmt.Fscan(in, &p)
g := gcd(p, i)
a := p / g
b := i / g
for _, d := range divs[a] {
if m := C[d]; m != nil {
if val, exists := m[b]; exists {
ans += int64(val)
}
}
}
if C[b] == nil {
C[b] = make(map[int32]int32)
}
if len(C[b]) == 0 {
modifiedX = append(modifiedX, b)
}
for _, d := range divs[a] {
C[b][d]++
}
}
for _, x := range modifiedX {
for k := range C[x] {
delete(C[x], k)
}
}
fmt.Fprintln(out, ans)
}
}