Description
Given a series of n numbers a1, a2, …, an, the partial sum of the numbers is defined as the sum of ai, ai+1, …, aj.
You are supposed to calculate how many partial sums of a given series of numbers could be divided evenly by a given number m.
Input
There are multiple test, each contains 2 lines.
The first line is 2 positive integers n (n <= 10000 ) and m (m <= 5000).
The second line contains n non-negative integers a1, a2, …, an. Numbers are separated by one or several spaces.
The input is ended by EOF.
Output
One test each line – the number of partial sums which could be divided by m.
Sample Input
5 4
1 2 3 4 5
6 7
9 8 7 6 5 4
Sample Output
2
3
Source
#include <stdio.h>
int main(int argc, char *argv[])
{
int n,m;
int a[];
int sum[];
while( scanf("%d %d" ,&n ,&m)!=EOF ){
int ans=;
int ca[]={};
for(int i=; i<n; i++){
scanf("%d",&a[i]);
if(i==){
sum[i]=a[i]%m;
}else{
sum[i]=(sum[i-]+a[i])%m;
}
if(sum[i]%m==)
ans++;
ca[sum[i]]++;
}
for(int i=; i<m; i++)
ans+=ca[i]*(ca[i]-)/;
printf("%d\n",ans);
}
return ;
}