#include<iostream>
using namespace std;
int n,k;
int sum[100001];
int A[100001];
int num[100001];//统计各余数出现次数
long long cnt=0;
int main(){
cin>>n>>k;
num[0]=1;//有的数字本身就是k的倍数
for(int i=1;i<=n;i++){
cin>>A[i];
sum[i]=(sum[i-1]+A[i])%k;
num[sum[i]]++;//统计相同余数的个数
}
for(int i=0;i<k;i++){
cnt+=(long long)num[i]*(num[i]-1)/2;
}
cout<<cnt<<endl;
return 0;
}
题目1882:蓝桥杯2017年第八届真题-k倍区间
未经允许不得转载:171主机测评 » 题目1882:蓝桥杯2017年第八届真题-k倍区间
相关推荐
【Linux网络加餐(篇四)】手把手写一个 UDP 英译汉词典服务器:小白也能看懂的 C++ 网络编程实战
Redis 核心进阶:哨兵、集群、缓存问题与分布式锁详解----《Hello Redis!》(6)
模型跑不动又不能加GPU?C#端知识蒸馏+结构化剪枝落地笔记,产线实测从210ms压到65ms
【万字长文/408考研必刷】操作系统核心大题:页面置换算法(OPT/FIFO/LRU/Clock)深度拆解与工业级实战
CSP-J 初赛(以满分为目标):第四十二课《排列组合解题技巧③——至少、至多与排除法》
20.Prim 算法:从起点出发,每次选最近的城市连成一张网
CSP-J 初赛(以满分为目标):第四十二课《排列组合解题技巧③——至少、至多与排除法》
SPARKLE置换算法的优缺点






