For problem statement at 1000-1999/1200-1299/1200-1209/1203/problemC.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1200-1209/1203/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"os"
"strconv"
)
func nextInt64(r *bufio.Reader) (int64, error) {
var sign int64 = 1
var val int64 = 0
b, err := r.ReadByte()
for err == nil && (b < '0' || b > '9') && b != '-' {
b, err = r.ReadByte()
}
if err != nil {
return 0, err
}
if b == '-' {
sign = -1
b, err = r.ReadByte()
if err != nil {
return 0, err
}
}
for err == nil && b >= '0' && b <= '9' {
val = val*10 + int64(b-'0')
b, err = r.ReadByte()
}
return val * sign, nil
}
func gcd(a, b int64) int64 {
if a < 0 {
a = -a
}
if b < 0 {
b = -b
}
for b != 0 {
a, b = b, a%b
}
return a
}
func countDivisors(n int64) int64 {
if n == 1 {
return 1
}
var res int64 = 1
var cnt int64
for n%2 == 0 {
cnt++
n /= 2
}
if cnt > 0 {
res *= (cnt + 1)
}
var p int64 = 3
for p*p <= n {
cnt = 0
for n%p == 0 {
cnt++
n /= p
}
if cnt > 0 {
res *= (cnt + 1)
}
p += 2
}
if n > 1 {
res *= 2
}
return res
}
func main() {
r := bufio.NewReaderSize(os.Stdin, 1<<20)
w := bufio.NewWriterSize(os.Stdout, 1<<20)
defer w.Flush()
n64, err := nextInt64(r)
if err != nil {
return
}
n := int(n64)
var g int64 = 0
for i := 0; i < n; i++ {
x, _ := nextInt64(r)
g = gcd(g, x)
}
ans := countDivisors(g)
w.WriteString(strconv.FormatInt(ans, 10))
w.WriteByte('\n')
}