P8649 [蓝桥杯 2017 省 B] k 倍区间(同余定理)

蓝桥杯 2017 省 B k 倍区间

题目描述

给定一个长度为 N 的数列,A_1,A_2, \\cdots A_N,如果其中一段连续的子序列 A_i,A_{i+1}, \\cdots A_j(i \\le j) 之和是 K 的倍数,我们就称这个区间 \[i,j\]K 倍区间。

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

输入格式

第一行包含两个整数 NK(1 \\le N,K \\le 10\^5)

以下 N 行每行包含一个整数 A_i(1 \\le A_i \\le 10\^5)

输出格式

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

样例 #1

样例输入 #1

```

5 2

1

2

3

4

5

```

样例输出 #1

```

6

```

提示

时限 2 秒, 256M。蓝桥杯 2017 年第八届

利用同余定理:当a mod k=b mod k 时,∣a−b∣mod k=0。

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,s[100005],ans=0,xb[100005];
signed main(){
    cin>>n>>k;
    for(int i=1,t;i<=n;i++)
        cin>>t,s[i]=s[i-1]+t;
    for(int i=0;i<=n;i++)
        ans+=xb[s[i]%k]++;
    cout<<ans;
    return 0;
}
相关推荐
Dr.kangder几秒前
嵌入式面试总结(十六)——AMBA总线
面试·职场和发展·架构·嵌入式·虚拟化·总线
Dr.kangder24 分钟前
嵌入式面试总结(十九)——内存泄露
单片机·算法·面试·职场和发展·架构·硬件架构
Dr.kangder36 分钟前
嵌入式面试总结(十七)——DMA总线
面试·职场和发展·架构·嵌入式·总线
城管不管17 小时前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
琥珀色糖20 小时前
leetcode hot100题(持续更新)移动零(双指针)
算法·leetcode·职场和发展·双指针·移动零
Dr.kangder21 小时前
嵌入式面试总结(十四)——中断处理
单片机·面试·职场和发展·架构·硬件架构·嵌入式
Dr.kangder1 天前
嵌入式面试总结(十)——流水线
单片机·嵌入式硬件·面试·职场和发展·系统架构·嵌入式
淡海水1 天前
C#与常用数据结构源码剖析-全篇导览
开发语言·数据结构·unity·面试·职场和发展·c#
.道阻且长.2 天前
5.LeetCode算法习题讲解--双指针--有效三角形的个数
算法·leetcode·职场和发展
想吃火锅10052 天前
【leetcode】300. 最长递增子序列
算法·leetcode·职场和发展