求助,9和10 过不去
查看原帖
求助,9和10 过不去
153543
仙风道骨楼主2021/9/13 19:49
#include<bits/stdc++.h>
using namespace std;
int sum=0,s[20000005],a[20000005],n,maxl[7]={0,-1,-1,-1,-1,-1,-1},maxr[7]={0,-1,-1,-1,-1,-1,-1};
 int read()
{
    int s=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
    return s*w;
}
int main(){
	n=read();
    s[0]=0;
for(int i=1;i<=n;i++){
	a[i]=read();
	s[i]=s[i-1]+a[i];
	}
	
for(int i=1;i<=n;i++){
	s[i]%=7;
    if(maxl[s[i]]>i||maxl[s[i]]==-1)
    maxl[s[i]]=i;
    if(maxr[s[i]]==-1||maxr[s[i]]<i)
    maxr[s[i]]=i;
 //这一步是找到同余数时最大的右端点和最小的左端点
}

for(int i=0;i<7;i++){
	if(maxl[i]!=-1)
sum=max(sum,maxr[i]-maxl[i]);
	}
	cout<<sum;
	 return 0;
}
2021/9/13 19:49
加载中...