题目描述
有n个正整数排成一行。你的目的是要从中取出一个或连续的若干个数,使它们的和能够被k整除。
例如,有6个正整数,它们依次为1,2,6,3,7,4。若k=3,则你可以取出1,2,6,或者2,6,3,7,也可以仅仅取出一个6或者3使你所取的数之和能被3整除。当然,满足要求的取法不止以上这4种。事实上,一共有7种取法满足要求。
给定n和k,以及这n个数。你的任务就是确定从这n个数中取出其中一个数或者若干连续的数,使它们的和能被k整除有多少方法。记Ha=1234567,由于取法可能很多,因此你只需要输出它mod Ha的值即可
输入
第一行为两个整数n,k。以下n行每行一个正整数,描述这个序列。
输出
输出一个整数,为答案mod Ha的结果。
样例输入
6 3
1
2
6
3
7
4
样例输出
7
提示
对于30%的数据,有1≤n≤1000
对于100%的数据,有1≤n≤500000,1≤k≤100000
思路
对该序列,求前缀和sum[i],对位置i<j,如果sum[i]%k == sum[j] % k ,可推知(sum[j]-sum[i])%k == 0,即可组成一种方法,所以ans=sum[0]+(sum[i]*sum[i]-1)/2
代