For problem statement at 0-999/200-299/230-239/235/problemE.txt this is a correct solution, but verifier at 0-999/200-299/230-239/235/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"fmt"
"sort"
)
func gcd(a, b int) int {
for b != 0 {
a, b = b, a%b
}
return a
}
func main() {
var a, b, c int
fmt.Scan(&a, &b, &c)
arr := []int{a, b, c}
sort.Ints(arr)
a, b, c = arr[0], arr[1], arr[2]
mu := make([]int, c+1)
primes := make([]int, 0, c+1)
isPrime := make([]bool, c+1)
for i := 2; i <= c; i++ {
isPrime[i] = true
}
mu[1] = 1
for i := 2; i <= c; i++ {
if isPrime[i] {
primes = append(primes, i)
mu[i] = -1
}
for _, p := range primes {
if i*p > c {
break
}
isPrime[i*p] = false
if i%p == 0 {
mu[i*p] = 0
break
}
mu[i*p] = -mu[i]
}
}
H := make([]uint32, c+1)
for x := 1; x <= c; x++ {
var sum uint32
for k := 1; k <= x; k++ {
sum += uint32(x / k)
}
H[x] = sum
}
F := make([]uint32, c+1)
for d := 1; d <= c; d++ {
if mu[d] == 1 {
F[d] = H[c/d]
} else if mu[d] == -1 {
F[d] = -H[c/d]
}
}
ab := a * b
g := make([]uint32, ab+1)
for d := 1; d <= c; d++ {
if F[d] != 0 {
for k := d; k <= ab; k += d {
g[k] += F[d]
}
}
}
var ans uint32
for x := 1; x <= a; x++ {
for y := 1; y <= b; y++ {
if gcd(x, y) == 1 {
ans += uint32(a/x) * uint32(b/y) * g[x*y]
}
}
}
fmt.Println(ans & 0x3FFFFFFF)
}