TOJ 1721 Partial Sums

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

ZOJ Monthly March 2003

 

 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     int n,m;
 5     int a[10001];
 6     int sum[10001];
 7     while( scanf("%d %d" ,&n ,&m)!=EOF ){
 8         int ans=0;
 9         int ca[5001]={0};
10         for(int i=0; i<n; i++){
11             scanf("%d",&a[i]);
12             if(i==0){
13                 sum[i]=a[i]%m;
14             }else{
15                 sum[i]=(sum[i-1]+a[i])%m;
16             }
17             if(sum[i]%m==0)
18                 ans++;
19             ca[sum[i]]++;
20         }
21         for(int i=0; i<m; i++)
22             ans+=ca[i]*(ca[i]-1)/2;
23         printf("%d\n",ans);
24     }
25     return 0;
26 }

 

你可能感兴趣的:(part)