(
s
u
m
r
−
s
u
m
l
)
%
k
=
r
−
l
(sum_r - sum_l) \% k = r - l
(sumr−suml)%k=r−l
(
s
u
m
r
−
r
)
%
k
=
(
s
u
m
l
−
l
)
%
k
(sum_r - r) \% k = (sum_l - l) \% k
(sumr−r)%k=(suml−l)%k
注意:r - l < k
Code
constint N =2e5+5;
ll a[N], sum[N];
map<ll,int> mp;intmain(){
IOS;int n, k; cin >> n >> k;for(int i =1; i <= n; i++){
cin >> a[i];
sum[i]= sum[i -1]+ a[i];}
mp[0]++;
ll ans =0, l =0;for(int i =1; i <= n; i++){if(i - l >= k)//保证r - l合法{
mp[(sum[l]- l + k)% k]--;
l++;}
ans += mp[(sum[i]- i + k)% k];
mp[(sum[i]- i + k)% k]++;}
cout << ans << endl;return0;}