#P4990. 和为 K 的倍数

和为 K 的倍数

和为 K 的倍数

课程自编 · 前缀和与余数

题目描述

给出一个长度为 nn 的正整数序列 a1,a2,…,ana_1,a_2,\dots,a_n 和正整数 KK。统计有多少个非空连续子区间 [l,r][l,r] 满足 al+al+1+⋯+ara_l+a_{l+1}+\cdots+a_r 是 KK 的倍数。

输入格式

第一行两个整数 n,Kn,K。第二行 nn 个正整数 a1,a2,…,ana_1,a_2,\dots,a_n。

输出格式

输出一个整数,表示和为 KK 的倍数的非空连续子区间个数。

数据范围与约定

1≤n≤2×1051 \le n \le 2\times 10^5,1≤K≤1051 \le K \le 10^5,1≤ai≤1091 \le a_i \le 10^9。

样例输入

5 3
1 2 3 4 5

样例输出

7

样例说明

前缀和模 33 的余数为 0,1,0,0,1,00,1,0,0,1,0。余数 00 出现 44 次,任取两个端点得到 66 个区间;余数 11 出现 22 次,得到 11 个区间。总数为 6+1=76+1=7。

说明

课程自编题,数据由 src/gen.py 生成。