For problem statement at 1000-1999/1300-1399/1360-1369/1361/problemB.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1360-1369/1361/verifierB.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"sort"
"strconv"
)
const MOD = 1000000007
func power(base, exp int) int {
res := 1
base %= MOD
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % MOD
}
base = (base * base) % MOD
exp /= 2
}
return res
}
func main() {
buf, _ := io.ReadAll(os.Stdin)
pos := 0
nextInt := func() int {
for pos < len(buf) && (buf[pos] < '0' || buf[pos] > '9') {
pos++
}
if pos >= len(buf) {
return 0
}
res := 0
for pos < len(buf) && buf[pos] >= '0' && buf[pos] <= '9' {
res = res*10 + int(buf[pos]-'0')
pos++
}
return res
}
t := nextInt()
if t == 0 {
return
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for tc := 0; tc < t; tc++ {
n := nextInt()
p := nextInt()
k := make([]int, n)
for i := 0; i < n; i++ {
k[i] = nextInt()
}
if p == 1 {
out.WriteString(strconv.Itoa(n%2) + "\n")
continue
}
sort.Ints(k)
ans := 0
C := 0
INF := n + 1
for i := n - 1; i >= 0; i-- {
if i < n-1 && C > 0 && C < INF {
diff := k[i+1] - k[i]
for diff > 0 && C < INF {
C *= p
if C >= INF {
C = INF
}
diff--
}
}
val := power(p, k[i])
if C == 0 {
C = 1
ans = (ans + val) % MOD
} else {
if C != INF {
C--
}
ans = (ans - val + MOD) % MOD
}
}
out.WriteString(strconv.Itoa(ans) + "\n")
}
}