欢迎光临散文网 会员登陆 & 注册

编程每日刷题系列五(k倍区间)

2021-02-13 08:44 作者:Eric_Richard  | 我要投稿

k倍区间

给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。  

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

输入

-----

第一行包含两个整数N和K。(1 <= N, K <= 100000)  

以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)  

输出

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


例如,

输入:

5 2

1  

2  

3  

4  

5  


程序应该输出:

6

资源约定:

峰值内存消耗(含虚拟机) < 256M

CPU消耗  < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。


注意:

main函数需要返回0;

只使用ANSI C/ANSI C++ 标准;

不要调用依赖于编译环境或操作系统的特殊函数。

所有依赖的函数必须明确地在源文件中 #include <xxx>

不能通过工程设置而省略常用头文件。


提交程序时,注意选择所期望的语言类型和编译器类型。


前缀和法

这种方法对于该题不能得满分,因为该题数据量范围大,前缀和法无法遍历这么多的数量级

C++代码:

样例运行结果:

纯数学法:

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!



编程每日刷题系列五(k倍区间)的评论 (共 条)

分享到微博请遵守国家法律