给定一个包含n个正整数的序列,我们需要计算连续子序列的数量,其总和可被k整除。
约束条件:n最大为10^6,每个元素最大为10^9,k最大为100。
例子:当N=5,K=3且数组为1 2 3 4 1时,
答案为4。
解释:存在4个子序列,它们的总和可被3整除。
约束条件: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