8、k倍区间

题目 k倍区间

image-3ba356ce

思路分析

前面前缀和 双指针很容易想得到

然后要是负整数倍 所以做的时候直接把小于0的情况给判断掉了

#include<bits/stdc++.h>
using namespace std;

const int N=100010;
int a[N],s[N];
int n,k;

int main()
{
  cin>>n>>k;
  for(int i=1;i<=n;i++){
    cin>>a[i];
    s[i]=s[i-1]+a[i];
  }
  int cnt=0;
  for(int l=1;l<=n;l++){
    for(int r=l;r<=n;r++){
    	int x=s[r]-s[l-1];
	    if(x>=0 && x%k==0){
	        cnt++;
	    }
    }
  }
  cout<<cnt;
  return 0;
}

但好像不是想象的那么简单

image-685f7be1

正解要用到取余的一些性质 具体参照y总改编的那个k被区间吧 K倍区间

考试的时候 也没数据测 都不知道这个方法会错 只能拿到两个案例的4分

代码实现


同类题型

视频讲解


⬅️ 7、全球变暖 🏠 00-刷题理模型 ➡️ 第八届 c++ B组 省赛