k倍区间问题为什么不可以使用双指针算法进行解决,想知道我的错误在哪里
给定一个长度为 N
的数列,A1,A2,…AN
,如果其中一段连续的子序列 Ai,Ai+1,…Aj
之和是 K
的倍数,我们就称这个区间 [i,j]
是 K
倍区间。
你能求出数列中总共有多少个 K
倍区间吗?
输入格式
第一行包含两个整数 N
和 K
。
以下 N
行每行包含一个整数 Ai
。
输出格式
输出一个整数,代表 K
倍区间的数目。
数据范围
1≤N,K≤100000
,
1≤Ai≤100000
```c++
#include<bits/stdc++.h>
using namespace std;
const int N=100009;
int a[N],s[N];
int n,k;
bool check(int i,int j){
int p=s[j]-s[i-1];
cout<<p<<endl;
if(p%k==0) return true;
else return false;
}
int main(){
int count=0;
scanf("%d %d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
s[i]=s[i-1]+a[i];
}
//双指针写嘞
for(int i=1;i<=n;i++){
int j=i;
while(j<=n) {
if(check(i,j)==true) count++;
j++;
}
}
cout<<count<<endl;
return 0;
}
```