蓝桥杯-k倍区间

news/2024/10/12 12:23:13

给定一个长度为 N 的数列,A1,A2,…AN,如果其中一段连续的子序列 Ai,Ai+1,…Aj 之和是 K 的倍数,我们就称这个区间 [i,j] 是 K 倍区间。

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

输入格式

第一行包含两个整数 N 和 K。

以下 N 行每行包含一个整数 Ai。

输出格式

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

数据范围

1≤N,K≤100000,1≤Ai≤100000

输入样例:

5 2
1
2
3
4
5
输出样例:
6

题解:

  • 先求前缀和
  • 对前缀和s[i] 取余, 余数相同的前缀和 互相相减是 k 的倍数 (ps : 如果余数相同的个数是4, 那么 答案应该加上 3 + 2 + 1; 相同的个数是 3 的话, 应该加上 2 + 1, 还不懂的话看下图)
  • 区间中只有一个元素的也符合题意

下图模拟的是样例

#include <bits/stdc++.h>
#define int long long    // 会爆 int
using namespace std;
const int N = 1e5 + 10;
int a[N], b[N];
signed main()
{int n, k; cin >> n >> k;int sum = 0;for (int i = 1; i <= n; i ++) {cin >> a[i]; a[i] += a[i - 1];    // 求前缀和}for (int i = 1; i <= n; i ++){                        // 👇 图解 if (b[a[i] % k] != 0) sum += b[a[i] % k];  b[a[i] % k] ++;}cout << sum + b[0] << endl; // 余数是0的代表自己是一个区间, 符合题意, 所有 最终答案要加上b[0]return 0;
}

觉得写的不错的话, 点个赞吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27279.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

im即时通讯源码/仿微信app源码+php即时通讯源码带红包+客服+禁言等系统php+uniapp开发

即时通讯(IM)系统是现代互联网应用中不可或缺的一部分,它允许用户进行实时的文本、语音、视频交流。随着技术的发展,IM系统的功能越来越丰富,如红包、客服、禁言等。本文将探讨如何使用PHP语言开发一个功能完备的即时通讯系统,包括源码解析、系统架构、关键功能实现等。 仓…

CF1968E.Cells Arrangement-构造(给个和题解不同的做法)

link:https://codeforces.com/problemset/problem/1968/E 题意:需要构造一个 \(n\times n\) 的棋盘,在上面放 \(n\) 枚棋子,设集合 \(\mathcal{H}\) 表示两两之间曼哈顿距离构成的集合,要让 \(|\mathcal{H}|\) 最大。给出放棋子的方案。首先说说题解的做法…考虑把距离为奇…

可持久化 树

Nityacke 的部分没多少,主要是 lxl 的部分可持久化可持久化线段树注意到 这里的内容 可能包括了 狭义的 可持久化线段树,可持久化权值线段树,”主席树“,可持久化 \(Trie\)...Luogu P3919 【模板】可持久化线段树 1(可持久化数组) 特定版本 单点修改,特定版本 单点查询,…

Metasploit-即时入门(全)

Metasploit 即时入门(全)原文:annas-archive.org/md5/FDEA350254319975F23617766073DAB6 译者:飞龙 协议:CC BY-NC-SA 4.0第一章. 快速入门 Metasploit 欢迎阅读《快速入门 Metasploit》。本书特别为您提供了设置 Metasploit 所需的所有信息。您将学习 Metasploit 的基础知…

威联通NAS强制降级解决系统崩溃问题

远程修复威联通NAS升级系统或系统崩溃无法进入WebUI界面的问题。V1.0 2024年5月3日 序言正文:解决方法 通过SSH强制降级重装(远程、局域网)通过QFinder重置(局域网内有可用主机)参考链接序言威联通的系统不要轻易更新,特别是Public Beta版本,有一定概率遇到bug,有一定概…

webapi添加添加websocket中间件

添加位置 我按照MSDN的例子添加了一个复述客户端响应的中间件。需要注意的时,中间件采用那种方式添加,添加在哪。哪种方式 我选择创建一条管道分支,只要时ws的连接请求,就转到这个分支 因此,我们需要使用的是MapWhen()来创建管道分支。 添加在哪 要注意授权的问题,所以应…

团队作业5

这个作业属于哪个课程 <软件工程2024-双学位>这个作业要求在哪里 <团队作业5>代码地址:gitcode链接 一、功能介绍 登录账号功能查看课表功能与帮助和说明二、环境要求 该软件以微信小程序形式存在,需要能使用小程序的微信版本,无需特意安装,只需安装微信。 bug…

U423621 [HDK - NRC] Sqen Paradox

[HDK - NRC] Sqen Paradox 题目描述 给定一个长度为 \(n\) 的数列 \(S\). 询问在给定区间 \([l,r]\) 内最长的没有重复元素的区间长度. 输入格式 第一行两个整数 \(n,m\). 第二行 \(n\) 个整数,描述数列 \(S\). 随后 \(m\) 行,每行一个询问. 输出格式 \(m\) 行,请你对每个询…