For problem statement at 0-999/900-999/960-969/961/problemG.txt this is a correct solution, but verifier at 0-999/900-999/960-969/961/verifierG.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
const MOD = 1000000007
func power(base, exp int64) int64 {
var res int64 = 1
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n, k int64
if _, err := fmt.Fscan(reader, &n, &k); err != nil {
return
}
var sum int64 = 0
for i := int64(0); i < n; i++ {
var w int64
fmt.Fscan(reader, &w)
sum = (sum + w) % MOD
}
if k == 1 {
ans := (sum * (n % MOD)) % MOD
fmt.Println(ans)
return
}
invFact := make([]int64, k+1)
var factK int64 = 1
for i := int64(1); i <= k; i++ {
factK = (factK * i) % MOD
}
invFact[k] = power(factK, MOD-2)
for i := k - 1; i >= 0; i-- {
invFact[i] = (invFact[i+1] * (i + 1)) % MOD
}
var Snk int64 = 0
var Sn1k int64 = 0
for j := int64(0); j <= k; j++ {
term1 := power(j, n)
term2 := power(j, n-1)
term := (invFact[k-j] * invFact[j]) % MOD
if (k-j)%2 == 1 {
term = MOD - term
}
Snk = (Snk + term*term1) % MOD
Sn1k = (Sn1k + term*term2) % MOD
}
ans := (sum * Snk) % MOD
ans = (ans + sum*((n-1)%MOD)%MOD*Sn1k) % MOD
fmt.Println(ans)
}