For problem statement at 0-999/900-999/930-939/932/problemE.txt this is a correct solution, but verifier at 0-999/900-999/930-939/932/verifierE.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
const mod int64 = 1000000007
func powMod(a, e int64) int64 {
res := int64(1)
a %= mod
for e > 0 {
if e&1 == 1 {
res = (res * a) % mod
}
a = (a * a) % mod
e >>= 1
}
return res
}
func main() {
in := bufio.NewReader(os.Stdin)
var N int64
var k int
if _, err := fmt.Fscan(in, &N, &k); err != nil {
return
}
pow2N := powMod(2, N)
if k == 0 {
ans := (pow2N - 1) % mod
if ans < 0 {
ans += mod
}
fmt.Println(ans)
return
}
s := make([]int64, k+1)
s[0] = 1
for n := 1; n <= k; n++ {
for j := n; j >= 1; j-- {
s[j] = (s[j-1] + int64(j)*s[j]) % mod
}
s[0] = 0
}
inv2 := (mod + 1) / 2
fall := int64(1)
pow2 := pow2N
ans := int64(0)
for j := 1; j <= k; j++ {
factor := (N - int64(j) + 1) % mod
if factor < 0 {
factor += mod
}
fall = (fall * factor) % mod
pow2 = (pow2 * inv2) % mod
term := s[j]
term = (term * fall) % mod
term = (term * pow2) % mod
ans += term
if ans >= mod {
ans -= mod
}
if fall == 0 {
break
}
}
fmt.Println(ans % mod)
}