For problem statement at 2000-2999/2000-2099/2060-2069/2066/problemD1.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2060-2069/2066/verifierD1.go ends with All 65 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
const MOD = 1000000007
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
maxN := 10005
fact := make([]int64, maxN)
invFact := make([]int64, maxN)
fact[0] = 1
invFact[0] = 1
for i := 1; i < maxN; i++ {
fact[i] = (fact[i-1] * int64(i)) % MOD
}
invFact[maxN-1] = power(fact[maxN-1], MOD-2)
for i := maxN - 2; i >= 1; i-- {
invFact[i] = (invFact[i+1] * int64(i+1)) % MOD
}
for i := 0; i < t; i++ {
var n, c, m int
fmt.Fscan(reader, &n, &c, &m)
for j := 0; j < m; j++ {
var a int
fmt.Fscan(reader, &a)
}
if m < c || m-c > c*(n-1) {
fmt.Fprintln(writer, 0)
continue
}
N := c * (n - 1)
K := m - c
ans := (fact[N] * invFact[K]) % MOD
ans = (ans * invFact[N-K]) % MOD
fmt.Fprintln(writer, ans)
}
}
func power(base, exp int64) int64 {
res := int64(1)
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}