题目描述
给定一个长度为 N 的数列,A 1,A 2 ,⋯A N,如果其中一段连续的子序列 Ai,Ai+1,⋯A j( i≤j ) 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。你能求出数列中总共有多少个 K 倍区间吗?
输入描述
第一行包含两个整数 N 和 K( 1≤N,K≤10^5)。
以下 N 行每行包含一个整数 A i( 1≤A i ≤10^5 )
输出描述
输出一个整数,代表 K 倍区间的数目。
输入输出样例
示例
输入
5 2
1
2
3
4
5
输出
6
运行限制
- 最大运行时间:2s
- 最大运行内存: 256M
#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int main(){
int a[100000];
int n ;
int k;
cin>>n;
cin>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
int sum = 0;
int count=0;
for(int i=0;i<n;i++){
sum = 0;
for(int j = i;j<n;j++){
sum+=a[j];
if(sum%k==0){
count++;
}
}
}
cout<<count;
return 0;
}