首页 > 编程语言 >k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】

k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】

时间:2022-12-16 18:45:17浏览次数:70  
标签:第八届 int 蓝桥 a2 区间 省赛 include

k倍区间

给定一个长度为 \(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

思路

  1. 前缀和

Code

点击查看代码
#include<iostream>
#include<cstdio>
#include<cmath> 
#include<algorithm>
#include<vector>
#define endl '\n'
using namespace std;

typedef long long LL;
const int N = 1e5 + 10;
LL cnt[N]; 	//防止爆int 
int n,k;	
LL ans,a1,a2;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	
	cin >> n >> k;
	cnt[0] = 1;	
	//余数为0时存在长度为1的k倍区间
	//基数为1则如果数组中存在有长度为1的k倍区间,范围变为(0~r)
	for(int i = 1; i <= n; i ++ ){
		a1 = a2;	//前缀和只用当前和上一个:滚动数组优化空间 
		cin >> a2;	//输入当前 
		a2 += a1;	//自身求前缀和
		a2 %= k;	//求余数 
		ans += cnt[a2];	//先算ans后++维护l = (0~r-1) 
		cnt[a2] ++;		
		//这两段代码的意思是r固定时,从l = (0~r-1) 找到同余的个数
		//则所记录的k倍区间的长度大于1
	}
	cout << ans;
	return 0;
} 

标签:第八届,int,蓝桥,a2,区间,省赛,include
From: https://www.cnblogs.com/J-12045/p/16988085.html

相关文章

  • 四平方和【第七届蓝桥杯省赛C++A/B组,第七届蓝桥杯省赛JAVAB/C组】
    四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:\(5=0^2+0^2+1^2......
  • 蓝桥杯练习(寻找字符串)
    题目:注意事项:1、为什么输入需要使用fgets()函数?因为题目样例中出现了含有空格的字符串,而scanf()getchar()不具有接受空格字符串的能力,而gets()不安全,所以使用fgets()fgets()......
  • 蓝桥杯之单片机学习(一)——LED指示灯的基本控制
    文章目录​​一、前言​​​​课程内容结构​​​​二、训练任务​​​​三、训练重点​​​​四、74HC138​​​​五、74HC573​​​​六、代码展示​​一、前言课程内容结......
  • 蓝桥杯之单片机学习(三)——共阳数码管的静态显示
    文章目录​​一、训练任务​​​​二、训练重点​​​​三、训练准备​​​​3.1原理图展示​​​​3.2数字对照表​​​​3.3数码管分路​​​​3.4一些解释​​​​四......
  • 今日份蓝桥杯训练
    题目:解答:#define_CRT_SECURE_NO_WARNINGS1#include<iostream>#include<string>usingnamespacestd;intmain(){charc;//将数字和字符都考虑进去cin>>c;if(c>=......
  • 洛谷P8767 [蓝桥杯 2021 国 A] 冰山 题解 splay tree
    题目链接:​​https://www.luogu.com.cn/problem/P8767​​鸣谢:这道题的顺利解决得到了​​7KByte​​大佬的大力帮助,在此再次表示感谢。首先,我的想法是这样的:使用一个spl......
  • 蓝桥杯校赛题目以及解析
    题目一输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。第一个单词前,最后一个单词后也可能有0到多个空格。比如:"abc   xyz"包含两个单词,"ab  c......
  • arm蓝桥编译与反编译——20201302姬正坤
    程序的编译反编译汇编程序的运行遇到错误无法实现,目前还在调试......
  • P8742 [蓝桥杯 2021 省 AB] 砝码称重 题解
    题目分析原题链接P8742[蓝桥杯2021省AB]砝码称重由这道题,我们不难联想到P2347砝码称重,两题的做法是相似的。因此这道题做法就是背包。其本质上都是选取砝码,求能......
  • 蓝桥杯 ALGO-50算法训练 数组查找及替换
    问题描述给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。......