目录

蓝桥杯备战22.k倍区间——前缀和

目录

题目

分析

暴力求解

优化思路

AC代码


题目链接:

P8649 [蓝桥杯 2017 省 B] k 倍区间 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目

分析

很明显这题是一道前缀和的题

暴力求解

只得了28分

cpp 复制代码
#include<iostream>
using namespace std;
const int N = 2e5+10,M=1e3+10;
int a[N],pre[N];
int main()
{
	int n,k;cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		pre[i]=pre[i-1]+a[i];	
	}
	int ans = 0;
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if((pre[j]-pre[i])%k==0)ans++;
		}
	}
	cout<<ans;
	return 0;
}

优化思路

同余定理,当他们的模数相同时候,做差的模为0

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5+10,M=1e3+10;
int a[N],pre[N];
signed main()
{
	map<int,int>mp;
	int n,k;cin>>n>>k;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		pre[i]=(pre[i-1]+a[i])%k;
		mp[pre[i]]++;	
	}
	int ans = 0;
	for(auto i:mp)
	{
		if(i.first==0)
		{
			ans+=i.second*(i.second+1)/2;
		}
		else
		{
			ans+=i.second*(i.second-1)/2;
		}
	}
	cout<<ans;
	return 0;
}
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
爱学习的uu11 分钟前
决策树:ID3,C4.5,CART树总结
算法·决策树·机器学习
wuqingshun31415932 分钟前
蓝桥杯 9. 九宫幻方
数据结构·c++·算法·职场和发展·蓝桥杯·深度优先
小技与小术36 分钟前
代码随想录算法训练营day4(链表)
数据结构·python·算法·链表
yasuniko43 分钟前
C复习(主要复习)
c语言·数据结构·算法
云格~1 小时前
L1-5 吉老师的回归
开发语言·c++·人工智能·算法·职场和发展·数据挖掘·回归
短尾黑猫1 小时前
[LeetCode 1871] 跳跃游戏 7(Ⅶ)
算法·leetcode
杰瑞学AI2 小时前
LeetCode详解之如何一步步优化到最佳解法:27. 移除元素
数据结构·python·算法·leetcode·面试·职场和发展
天天扭码2 小时前
一杯咖啡的时间吃透一道算法题——2.两数相加(使用链表)
前端·javascript·算法
写个博客3 小时前
代码随想录算法训练营第十八天
算法
岩中竹3 小时前
力扣热题100—滑动窗口(c++)
数据结构·c++·算法·leetcode