← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var k, b int64
	var n int
	fmt.Fscan(in, &k, &b, &n)

	a := make([]int64, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &a[i])
	}

	var ans int64

	if b == 0 {
		var cnt int64
		for i := 0; i < n; i++ {
			if a[i] == 0 {
				cnt++
			} else {
				ans += cnt * (cnt + 1) / 2
				cnt = 0
			}
		}
		ans += cnt * (cnt + 1) / 2
	} else {
		mod := k - 1
		pref := int64(0)
		count := make(map[int64]int64)
		count[0] = 1

		for i := 0; i < n; i++ {
			pref = (pref + a[i]) % mod
			target := (pref - b) % mod
			if target < 0 {
				target += mod
			}
			ans += count[target]
			count[pref]++
		}

		if b == mod {
			var cnt int64
			for i := 0; i < n; i++ {
				if a[i] == 0 {
					cnt++
				} else {
					ans -= cnt * (cnt + 1) / 2
					cnt = 0
				}
			}
			ans -= cnt * (cnt + 1) / 2
		}
	}

	fmt.Fprintln(out, ans)
}
```