CF1575C Cyclic Sum

题目描述

设一个长度为 $n$ 的循环序列为一个数组 $s$,其中 $s_n$ 与 $s_1$ 相邻。当 $l < r$ 时,区间 $s[r, l]$ 表示 $s[r, n]$ 与 $s[1, l]$ 的拼接。 给定一个包含 $n$ 个整数的数组 $a$。定义 $b$ 为将 $a$ 拼接 $m$ 次后得到的循环序列。注意,$b$ 的长度为 $n \cdot m$。 给定一个整数 $k$,其中 $k = 1$ 或 $k$ 是一个质数。请你求出在 $b$ 中,有多少个不同的区间,其区间内元素之和能被 $k$ 整除。 如果两个区间的下标集合不同,则认为它们是不同的区间。例如,当 $n = 3$,$m = 2$ 时,区间 $s[2, 5]$ 的下标集合为 $\{2, 3, 4, 5\}$,区间 $s[5, 2]$ 的下标集合为 $\{5, 6, 1, 2\}$。特别地,区间 $s[1, 6], s[2,1], \ldots, s[6, 5]$ 被认为是相同的区间。 请输出答案对 $10^9 + 7$ 取模后的结果。

输入格式

第一行包含三个整数 $n$、$m$ 和 $k$($1 \leq n, m, k \leq 2 \times 10^5$,$k = 1$ 或 $k$ 是质数)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 2 \times 10^5$)。

输出格式

输出一个整数,表示在 $b$ 中有多少个不同的区间,其区间内元素之和能被 $k$ 整除,答案对 $10^9 + 7$ 取模。

说明/提示

在第一个样例中,所有满足条件的区间为 $[1,4]$、$[2,3]$、$[3,5]$ 和 $[4,2]$。 在第二个样例中,其中一个满足条件的区间为 $[1, 5]$。 由 ChatGPT 4.1 翻译