【发布时间】:2016-08-17 04:29:14
【问题描述】:
给定一个由 n 个正整数组成的序列,我们需要计算其和可被 k 整除的连续子序列。
约束:N 最大为 10^6,每个元素最大为 10^9,K 最大为 100
示例:设 N=5 和 K=3 且数组为 1 2 3 4 1
这里的答案是 4
解释:存在4个子序列,其和能被3整除,它们是
3
1 2
1 2 3
2 3 4
我的尝试:
long long int count=0;
for(int i=0;i<n;i++){
long long int sum=0;
for(int j=i;j<n;j++)
{
sum=sum+arr[j];
if(sum%k==0)
{
count++;
}
}
}
但显然它的方法很糟糕。他们可以更好地解决这个问题吗?请帮忙。
完整问题:https://www.hackerrank.com/contests/w6/challenges/consecutive-subsequences
【问题讨论】:
-
你要子序列还是子数组
-
@AyushJain 连续子序列,如前所述
-
假设你的数组是[1,4,3,2,1],那么你期望什么输出。你能告诉我吗?
-
如果您取所有输入数字的 %K 并使用休止符,您可以简化计算。因此,您将使用低于 100 的数字,这将帮助您避免溢出。
-
我有一个较慢的解决方案,即 O(NK),但它更容易理解,如果您愿意,我可以发布它