蓝桥杯k倍区间(前缀和、余数统计)

题目描述

给定一个长度为 NN 的数列,A1,A2,⋯ANA1​,A2​,⋯AN​,如果其中一段连续的子序列 Ai,Ai+1,⋯AjAi​,Ai​+1,⋯Aj​ ( i≤ji≤j ) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 K 倍区间。

你能求出数列中总共有多少个 KK 倍区间吗?

输入描述

第一行包含两个整数 NN 和 KK( 1≤N,K≤1051≤N,K≤105 )。

以下 N 行每行包含一个整数 AiAi​ ( 1≤Ai≤1051≤Ai​≤105 )

输出描述

输出一个整数,代表 K 倍区间的数目。

输入输出样例

示例

输入

复制代码
5 2
1
2
3
4
5

输出

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main()
{
long long n,k;
  cin>>n>>k;

  long long sum=0;
  long long ans=0;
  int cnt[100006]={0};
  cnt[0]=1;
  for(int i=1;i<=n;i++)
  {
    int x;
    cin>>x;
    sum+=x;
    int y=sum%k;
    ans+=cnt[y];
    cnt[y]++;
  }
  cout<<ans;
  return 0;
}
复制代码
6
相关推荐
智者知已应修善业2 小时前
【任何一个自然数m的立方均可写成m个连续奇数之和】2024-10-17
c语言·数据结构·c++·经验分享·笔记·算法
阿里嘎多哈基米2 小时前
速通Hot100-Day07——栈
数据结构·算法·leetcode··队列·hot100
一叶落4382 小时前
LeetCode 135. 分发糖果(C语言)| 贪心算法 + 双向遍历详解
c语言·数据结构·算法·leetcode·贪心算法·哈希算法
2401_900151542 小时前
自定义异常类设计
开发语言·c++·算法
努力学算法的蒟蒻2 小时前
day113(3.15)——leetcode面试经典150
算法·leetcode·职场和发展
一叶落4382 小时前
LeetCode 42. 接雨水(C语言详解)——双指针经典解法
c语言·数据结构·c++·算法·leetcode
寂柒2 小时前
哈希桶——模拟实现哈希表
数据结构·c++·算法
郝学胜-神的一滴2 小时前
一序平衡,括号归真:单括号匹配算法的优雅美学
java·前端·数据结构·c++·python·算法
小O的算法实验室2 小时前
2026年IEEE TCYB SCI1区TOP,电动采摘机器人多目标任务分配:一种分层路径重构方法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进