这两道题是一样的
都是给你一个n个数的序列,再给你一个k,问如果一个区间和可以被k整除,求最大的区间长度
做法都是前缀和+取模
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005];
map<int,int>sp;
int main()
{
int n,k,i,j,ans=0;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]+=a[i-1];
a[i]%=k;
if(a[i]==0)
{
ans=max(ans,i);
continue;
}
if(sp[a[i]]==0)sp[a[i]]=i;
else
{
ans=max(ans,i-sp[a[i]]);
}
}
printf("%d\n",ans);
return 0;
}