For problem statement at 1000-1999/1800-1899/1880-1889/1884/problemD.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1880-1889/1884/verifierD.go ends with case 1 failed
input:
1
9
5 4 6 7 9 9 8 2 2
expected:0
got:25
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MAXN = 1000010
var mu [MAXN]int
func sieve() {
var isComposite [MAXN]bool
var primes []int
mu[1] = 1
for i := 2; i < MAXN; i++ {
if !isComposite[i] {
primes = append(primes, i)
mu[i] = -1
}
for _, p := range primes {
if i*p >= MAXN {
break
}
isComposite[i*p] = true
if i%p == 0 {
mu[i*p] = 0
break
} else {
mu[i*p] = -mu[i]
}
}
}
}
func main() {
sieve()
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([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
cnt := make([]int64, n+1)
for i := 0; i < n; i++ {
cnt[a[i]]++
}
if cnt[1] > 0 {
fmt.Println(0)
continue
}
f := make([]int64, n+1)
for m := 1; m <= n; m++ {
for j := m; j <= n; j += m {
f[m] += cnt[j]
}
}
qual := make([]bool, n+1)
for i := 0; i <= n; i++ {
qual[i] = true
}
for s := 1; s <= n; s++ {
if cnt[s] > 0 {
for mult := s; mult <= n; mult += s {
qual[mult] = false
}
}
}
var ans int64 = 0
for g := 1; g <= n; g++ {
if !qual[g] {
continue
}
var sum int64 = 0
for k := 1; ; k++ {
gk64 := int64(g) * int64(k)
if gk64 > int64(n) {
break
}
gk := int(gk64)
bino := f[gk] * (f[gk] - 1) / 2
sum += int64(mu[k]) * bino
}
ans += sum
}
fmt.Println(ans)
}
}
```