2017年第八届蓝桥杯—— k倍区间
题目描述
资源限制
时间限制:2.0s 内存限制:256.0MB
问题描述
给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。
你能求出数列中总共有多少个K倍区间吗?
你能求出数列中总共有多少个K倍区间吗?
输入格式
第一行包含两个整数N和K。(1 <= N, K <= 100000)
以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)
以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)
输出格式
输出一个整数,代表K倍区间的数目。
样例输入
5 2
1
2
3
4
5
1
2
3
4
5
样例输出
6
数据规模和约定
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 2000ms
解题思路——前缀和+hash
具体思路见LeetCode每日一题——523. 连续的子数组和(同余定理)
AC代码
1 import java.util.*; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner input = new Scanner(System.in); 6 int N = input.nextInt(); 7 int K = input.nextInt(); 8 Map<Long, List<Integer>> map = new HashMap<>(); 9 List<Integer> temp = new ArrayList<>(); 10 temp.add(-1); 11 map.put(0L, temp); 12 long prefix = 0; 13 long res = 0; 14 15 for (int i = 0; i < N; i++) { 16 int a = input.nextInt(); 17 prefix += a; 18 prefix %= K; 19 if (map.containsKey(prefix)) { 20 List<Integer> t = map.get(prefix); 21 res += t.size(); 22 t.add(i); 23 } else { 24 List<Integer> t = new ArrayList<>(); 25 t.add(i); 26 map.put(prefix, t); 27 } 28 } 29 System.out.println(res); 30 } 31 } 32 33 class MyArea { 34 int left; 35 int right; 36 37 public MyArea(int left, int right) { 38 this.left = left; 39 this.right = right; 40 } 41 42 @Override 43 public boolean equals(Object o) { 44 if (this == o) return true; 45 if (o == null || getClass() != o.getClass()) return false; 46 MyArea myArea = (MyArea) o; 47 return left == myArea.left && right == myArea.right; 48 } 49 50 @Override 51 public int hashCode() { 52 return Objects.hash(left, right); 53 } 54 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能