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

精选一百道备赛蓝桥杯——2.K倍区间

在这里插入图片描述
在这里插入图片描述

解题思路

  1. 任何两个前缀区间的和对k取模的值相等,则由大的前缀区间减掉小的前缀区间所形成的区间的必定是K倍区间。
  2. 因此我们可以对具有区间和%k值相等任何两个区间进行组合,再将这些值加起来就得到结果!
  3. 证明: 假设一个数列为a1,a2,a3,…,an,一个小的前缀区间s1为a1,a2,a3,…,ap,还有一个大的前缀区间s2为a1,a2,a3,…,a(p+m),p,p+m<n。
  4. 当我们对s1、s2的和分别取模,得到(a1+a2+a3+…+ap)%k和(a1+a2+a3+…+ap+m)%k,当这两个值相等的时候。
  5. 我们则可以列出这个等式:(a1+a2+a3+…+ap)%k-(a1+a2+a3+…+ap+m)%k=0,根据取模也具有分配律可得到,(a1+a2+a3+…+ap-a1-a2-a3-…-ap+m)%k=0。
  6. 因此可以推出结论,s2-s1得出的区间必定为k倍区间。

代码实现

#include <iostream>
using namespace std;
long long a[100010];
long long cnt[100010];
long long ans = 0;
int main()
{
  cnt[0]++;
  int n, k; cin >> n >> k;
  for(int i = 1; i <= n; i++){
    cin >> a[i];
    a[i] += a[i-1];
  }
  
  for(int i = 1; i <= n; i++)  ans += cnt[a[i] % k]++;
  cout << ans;
  return 0;
}

相关文章:

  • YOLOv10改进之MHAF(多分支辅助特征金字塔)
  • BookChatApp通用书籍阅读APP
  • 云渲染技术在影视特效制作中的核心优势
  • Spring AI+硅基流动DeepSeek语音识别全栈方案:从FFmpeg预处理到分布式推理
  • 量子计算:气候模型的新纪元
  • 采用大模型技术进行知识图谱实体对齐的技术和开源项目
  • flask学习2-应用(博客)
  • 深度理解指针与内存
  • 使用数据库和缓存的时候,是如何解决数据不一致的问题的?
  • android edittext 防止输入多个小数点或负号
  • 开发环境搭建-05.后端环境搭建-前后端联调-通过断点调试熟悉项目代码特点
  • 每日一题----------枚举的注意事项和细节
  • C/C++蓝桥杯算法真题打卡(Day3)
  • 江科大51单片机笔记【11】AT24C02(I2C总线)
  • 算法·搜索
  • 数据集笔记 LTA Traffic Count
  • VS2019,VCPKG - 为VS2019添加VCPKG
  • LInux 文件系统
  • Spring Boot 缓存最佳实践:从基础到生产的完整指南
  • 实时读取另一个串口发来的返回数据
  • 31只北交所主题基金齐刷净值纪录,年内最高涨超80%,已有产品打出“限购牌”
  • 这群“工博士”,把论文“写”在车间里
  • 阳朔兴坪镇:在建乾元桥“垮塌”是谣言,系降雨导致工程挡土墙倾斜
  • 媒体:演员黄杨钿甜耳环事件仍有三大疑问待解
  • 5月LPR下调:1年期、5年期以上品种均下调10个基点
  • 复旦兼职教授高纪凡首秀,勉励学子“看三十年才能看见使命”