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

前缀和的例题

lanqiao OJ 97

题目描述

给定一个长度为 NN 的数列,A1,A2,⋯ANA1​,A2​,⋯AN​,如果其中一段连续的子序列 Ai,Ai+1,⋯AjAi​,Ai​+1,⋯Aj​ ( i≤ji≤j ) 之和是 KK 的倍数,我们就称这个区间 [i,j][i,j] 是 K 倍区间。

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

输入描述

第一行包含两个整数 NN 和 KK( 1≤N,K≤1051≤N,K≤105 )。

以下 N 行每行包含一个整数 AiAi​ ( 1≤Ai≤1051≤Ai​≤105 )

输出描述

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

输入输出样例

示例

输入

5 2
1
2
3
4
5

输出

6
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5+5;
ll a[N];
ll ans[N];
int n,k;
int main(){
  cin>>n>>k;
  for(int i=1;i<=n;i++){
    cin>>a[i];
  }
  for(int i=1;i<=n;i++){
    a[i]+=a[i-1];
  }
  for(int i=1;i<=n;i++){
    ans[a[i]%k]++;
  }
  ll sum=ans[0];
  for(int i=0;i<k;i++){
    sum+=(ans[i]*(ans[i]-1))/2;
  }

  cout<<sum;


  return 0 ;
}

 


http://www.kler.cn/a/588227.html

相关文章:

  • Android多线程通信机制
  • 开源WAF雷池本地化部署与远程查看网站安全防护的详细操作指南
  • Matlab 多输入系统极点配置
  • ChatGPT-4
  • 论文阅读笔记——QLORA: Efficient Finetuning of Quantized LLMs
  • ollama注册自定义模型(GGUF格式)
  • Python游戏开发自学指南:从入门到实践(第四天)
  • JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal
  • 我的创作纪念日--林戈的IT生涯-CSDN博客创作一年感想
  • 使用 `Express.js` 和 `better-sqlite3` 的最佳实践指南
  • 【Java】为在Azure容器应用中运行的Java应用捕获JVM堆转储
  • HTML5 drag API实现列表拖拽排序
  • Solana介绍
  • css3-学习
  • InfluxDB写入测试
  • C++20 的 `std::remove_cvref`:简化类型处理的利器
  • 简单的电子和电力知识学习大纲
  • 蓝桥杯刷题周计划(第三周)
  • LLM论文笔记 25: Chain-of-Thought Reasoning without Prompting
  • Python----数据分析(Pandas一:pandas库介绍,pandas操作文件读取和保存)