当前位置: 首页 > news >正文

P8649 [蓝桥杯 2017 省 B] k 倍区间:做题笔记

目录

思路 

代码思路

代码

推荐 


P8649 [蓝桥杯 2017 省 B] k 倍区间

思路 

额嗯,这道题我刚上来是想到了前缀和,但是还要判断每个子序列,我就两层for嵌套,暴力解了题。就是我知道暴力肯定过不了但是写不出来其他的[留下了苦涩的眼泪hh]

这道题用到了数学知识:同余定理:给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即 (a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b (mod m)。

也就是如果两个数对k取余,且余数相同,那么这两个数相减再对k取余,就会得到余数是0,也就是整除了。

那么对应到我们这道题里,我们按正常方法计算出前缀和,在对每一个前缀和的值进行对k取余,用一个数组来存储对应余数出现的次数,在这些具有相同余数的数中,任取两个数进行相减都会得到一段满足条件的K倍区间。(这里注意理解一下 数与区间 的转化,因为我们进行相减的数是某个前缀和,也就是某段区间的和,那么既然是两个区间的相减,得到的也就是一段符合条件的区间)

这个任取的过程用数学知识可以表示为Cx(下标)2(上标)

代码思路

① 

这道题我们甚至可以不开前缀和数组,因为我们计算同余数字的个数的话,其实只对最初求出的前缀和进行取模操作,而不需要对某两个前缀和进行处理,也就是说,其实这个前缀和数组我们也只是使用到了一次而已,因此,在这里不设前缀和数组和前缀和算法中原数组可以不设的原因是一样的,我们可以直接设一个变量来表示每个数与前一个数相加的和。

为了避免每次输入进来的数据太大,我们甚至可以直接在把这个数加到前缀和中的时候就直接加该数对k取模之后的余数的值,因为我们最后也是要对每个前缀和取模的嘛。

(我想表达的是这样:)

for(int i=1;i<=n;i++){int x;cin>>x;sum+=x%k;//直接用sum一个变量表示每次更新的前缀和,每次更新即可。s[sum%k]++;sum%=k;}

 ③

说一下Cx(下标)2(上标)应该怎样计算,看着好像无从下手(我无从下手doge),其实很简单,就把它按数学里学的那样展开,就得到=(x*(x-1))/2就可以啦

另外有一点,我们最终进行计算的主要是围绕每个相同余数的数的个数,也就是s数组,要考虑到当余数是0的时候,其实相较于我们的通式(x*(x-1))/2是要多1的,可以通过举例来得到。因此对于s数组0所对应的初始值应该为1.

具体的解释可以看这个博主的题解(我也是主要看这个博主看明白哒)

【题解】P8649 题解

代码

#include<iostream>
#define int long long
using namespace std;
const int N=1e5+10;
int n,k;
int s[N];//用来存储同一个余数的个数
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>k;int sum=0;s[0]=1;for(int i=1;i<=n;i++){int x;cin>>x;sum+=x%k;s[sum%k]++;sum%=k;}int cnt=0;for(int i=0;i<k;i++)//遍历所有可能的相同余数{cnt+=(s[i]*(s[i]-1))/2;}cout<<cnt;return 0;} 

关于代码中一些书写上的 

ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

这三行是提速的。

#define int long long
...
signed main()

这里是为了避免忘记开long long导致丢分写的,也就是表示我们用int这个外号来表示long long 的新名字,这样写的话下面主函数int main() 记得前面的int变成 signed。

如果想了解更清晰的,可以看这个up猪的完整视频,我是蒟蒻hhh

【[蓝桥杯]避免常见坑点(输入输出问题、数据溢出问题等)】

这个就看个人习惯了. 

推荐 

这个博主简化了 Cx(下标)2(上标) 的计算过程,代码更简洁清晰,感兴趣可以看一下

17行代码解决

或许可以帮助大家理解 


呜呜感觉好菜呀🥀🥀🥀

有问题欢迎指出,一起加油!!

相关文章:

P8649 [蓝桥杯 2017 省 B] k 倍区间:做题笔记

目录 思路 代码思路 代码 推荐 P8649 [蓝桥杯 2017 省 B] k 倍区间 思路 额嗯&#xff0c;这道题我刚上来是想到了前缀和&#xff0c;但是还要判断每个子序列&#xff0c;我就两层for嵌套&#xff0c;暴力解了题。就是我知道暴力肯定过不了但是写不出来其他的[留下了苦…...

LeetCode题练习与总结:旋转图像

一、题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],…...

如何在家中使用手机平板电脑 公司iStoreOS软路由实现远程桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能&#xff0c;也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…...

【文献分享】myMUSCLE, a New Multiphysics, Multiscale Simulation Coupling Environment

题目&#xff1a;myMUSCLE, a New Multiphysics, Multiscale Simulation Coupling Environment 链接&#xff1a; https://doi.org/10.1080/00295639.2022.2148809 myMUSCLE&#xff0c;一种新的多物理场、多尺度仿真耦合环境 摘要 计算能力的提高使核界能够结合有关反应…...

2024年云计算使用报告,89%组织用多云,25%广泛使用生成式AI,45%需要跨云数据集成,节省成本是云首要因素

备注&#xff1a;本文来自Flexera2024年的云现状调研报告的翻译。原报告地址&#xff1a; https://info.flexera.com/CM-REPORT-State-of-the-Cloud Flexera是一家专注于做SaaS的IT解决方案公司&#xff0c;有30年发展历史&#xff0c;5万名客户&#xff0c;1300名员工。Flex…...

【Python操作基础】——序列

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…...

Vue 与 React:前端框架对比分析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

解决kubesphere流水线docker登陆错误http: server gave HTTP response to HTTPS client

kubesphere DevOps流水线中&#xff0c;在登录私有的harbor仓库时&#xff0c;报以下错误 docker login 111.230.19.120:80 -u admin -p test123. WARNING! Using --password via the CLI is insecure. Use --password-stdin. Error response from daemon: Get "https://…...

macOS安装mongoDB(homebrew)

使用 Homebrew Homebrew 是 macOS 的一个包管理器&#xff0c;可以非常方便地安装 MongoDB 和其他软件。如果你还没有安装 Homebrew&#xff0c;可以从它的官网上找到安装指令。 已安装 Homebrew的话&#xff0c;先更新一下homebrew brew update 你可以使用下面的命令来安装…...

免费SSL证书和付费SSL证书的区别点

背景&#xff1a; 在了解免费SSL证书和付费SSL证书的区别之前&#xff0c;先带大家了解一下SSL证书的概念和作用。 SSL证书的概念&#xff1a; SSL证书就是基于http超文本传输协议的延伸&#xff0c;在http访问的基础上增加了一个文本传输加密的协议&#xff0c;由于http是明…...

【SQL】1633. 各赛事的用户注册率(COUNT函数 表达式用法)

题目描述 leetcode题目&#xff1a;1633. 各赛事的用户注册率 Code select contest_id, round(count(*)/(select count(*) from Users)*100, 2) as percentage from Register group by contest_id order by percentage desc, contest_id ascCOUNT()函数 COUNT函数用法&#…...

【LVGL-使用SquareLine Studio设计器 】

LVGL-使用SquareLine Studio设计器 ■ 简介■ 安装■ SquareLine Studio移植到工程 ■ 简介 SquareLine Studio 设计器是一个付费软件。 ■ 安装 SquareLine Studio 设计器的下载地址 我们点击“WINDOWS”下载 SquareLine Studio 设计器&#xff0c;下载完成之后我们就会得到…...

将二进制数a的每一位右移b位operator.rshift(a,b)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将二进制数a的 每一位右移b位 operator.rshift(a,b) [太阳]选择题 请问执行operator.rshift(4, 1)的结果为&#xff1f; import operator print("【显示】二进制2&#xff1a;",bi…...

M芯片 mac配置Vulkan环境报错 Xcode

报错&#xff1a; Ignoring file ‘/usr/local/Cellar/glfw/3.3.4/lib/libglfw.3.3.dylib’: found architecture ‘x86_64’, required architecture ‘arm64’ Undefined symbols: Linker command failed with exit code 1 (use -v to see invocation) 解决&#xff1a;重新安…...

Day23:事务管理、显示评论、添加评论

事务管理 事务的定义 什么是事务 事务是由N步数据库操作序列组成的逻辑执行单元&#xff0c;这系列操作要么全执行&#xff0c;要么全放弃执行。 事务的特性(ACID) 原子性(Atomicity):事务是应用中不可再分的最小执行体&#xff08;事务中部分执行失败就会回滚 。一致性(C…...

第一篇:概述、 目录、适用范围及术语 --- IAB/MRC《增强现实(AR)广告(效果)测量指南1.0 》

第一篇&#xff1a;概述、目录、适用范围及术语 - IAB与MRC及《增强现实广告效果测量指南1.0》 --- 我为什么要翻译美国IAB科技公司系列标准 ​​​​​​​​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效…...

pytorch常用的模块函数汇总(2)

目录 torch.utils.data&#xff1a;数据加载和处理模块&#xff0c;包括 Dataset 和 DataLoader 等工具&#xff0c;用于加载和处理训练数据。 torchvision&#xff1a;计算机视觉模块&#xff0c;提供了图像数据集、转换函数、预训练模型等&#xff0c;用于计算机视觉任务。 …...

OpenAI奥特曼豪赌1.42亿破解长生不老

生物初创公司 Retro Biosciences 由山姆奥特曼投资1.42亿英镑&#xff0c;公司目标是延长人类寿命。 山姆奥特曼投资背景&#xff1a; 38 岁的奥特曼一直是科技行业的重要参与者。尽管年纪轻轻&#xff0c;奥特曼凭借 ChatGPT 和 Sora 等产品席卷了科技领域。奥特曼对 Reddit…...

[晕事]今天做了件晕事29;iptables

今天办了一件晕事&#xff0c;主机之间做ping用tcpdump抓到了ping request&#xff0c;但是没有看到ping reply&#xff0c;查看主机的arp表&#xff0c;路由表都没有问题&#xff0c;忘记看iptables的规则。虽然在tcpdump看到包&#xff0c;只是代表包到了二层&#xff0c;并不…...

2018年亚马逊云科技推出基于Arm的定制芯片实例

2018年&#xff0c;亚马逊云技术推出了基于Arm的定制芯片。 据相关数据显示&#xff0c;基于Arm的性价比比基于x86的同类实例高出40%。 这打破了对 x86 的依赖&#xff0c;开创了架构的新时代&#xff0c;现在能够支持多种配置的密集计算任务。 这些举措为亚马逊云技术的其他创…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...