题目1882:蓝桥杯2017年第八届真题-k倍区间

#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;

}

相关推荐
Mikowoo0072 小时前
Visual Studio 2022 下CUDA程序开发
c++·visual studio
Darkwanderor2 小时前
图论——拓扑排序和图上DP
c++·算法·动态规划·图论·拓扑排序
有时间要学习2 小时前
面试150——第六周
算法·面试·深度优先
请叫我大虾2 小时前
数据结构与算法-分裂问题,将数字分成0或1,求l到r之间有多少个1.
java·算法·r语言
hetao17338372 小时前
2026-03-04~03-06 hetao1733837 的刷题记录
c++·算法
逆境不可逃2 小时前
【从零入门23种设计模式16】行为型之迭代器模式
java·开发语言·数据结构·算法·设计模式·职场和发展·迭代器模式
xiaoye-duck2 小时前
《算法题讲解指南:优选算法-分治-归并》--47.归并排序,48.数组中的逆序对
c++·算法
Darkwanderor2 小时前
图论——最短路问题
c++·算法·图论·最短路
Filotimo_2 小时前
3.4 图
算法·图论