lanqiao OJ k倍区间

简介: lanqiao OJ k倍区间

用户登录

感觉需要做一些杂题。

k倍区间,我们要先求数组的前缀和,这样才能对区间进行操作,我们用前缀和的余数来记录每一个余数的数量,当出现这个余数的时候,我们当前的前缀和减去前面的任意一个余数相同的前缀和,都能构成新的复合条件的区间;

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
typedef long long LL ;
const int N = 1e5 +10 ;
LL a[N] ;
LL n ; LL k ;
LL ans ;
LL sum[N] ;//用于记录各个余数的的前缀和的数量
int main(){
  cin >> n >> k ;
  sum[0] = 1 ;
  for(int i = 1 ; i <= n ; i ++){
    cin >> a[i] ;
    a[i] += a[i-1] ;//自身求前缀和
    ans += sum[a[i]%k] ;//返回值加上当前,前面的余数相同的数量
    sum[a[i]%k] ++ ; //再将当前这个余数为a[i]%k的记上数
  }
  cout << ans << endl ; 
} 
目录
相关文章
|
1月前
lanqiao OJ 3513 岛屿个数(2023省赛)
lanqiao OJ 3513 岛屿个数(2023省赛)
14 2
|
1月前
|
人工智能 Java BI
lanqiao OJ 111 区间位移
lanqiao OJ 111 区间位移
11 0
|
3月前
|
算法
LeetCode第16题最接近的三数之和
该文章介绍了 LeetCode 第 16 题最接近的三数之和的解法,与第 15 题类似,通过双指针法减少循环次数,根据差值的绝对值来更新最接近的和,并总结了双指针可减少循环次数的要点。
|
5月前
|
Java
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
贪心 -力扣860.柠檬水找零力扣2208.将数组和减半的最少操作次数力扣179.最大数力扣376.摆动序列
|
6月前
|
人工智能 算法 Java
K倍区间(蓝桥杯每日一题)
K倍区间(蓝桥杯每日一题)
54 0
|
6月前
leetcode-16:最接近的三数之和
leetcode-16:最接近的三数之和
47 0
|
6月前
【每日一题Day261】LC16最接近的三数之和 | 双指针
【每日一题Day261】LC16最接近的三数之和 | 双指针
37 0
|
人工智能
蓝桥 k倍区间 (前缀和)
蓝桥 k倍区间 (前缀和)
|
算法 安全 Swift
LeetCode - #16 最接近的三数之和
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
人工智能
蓝桥杯:k倍区间
蓝桥杯:k倍区间
58 0
下一篇
无影云桌面