#1444. 完善练习1

完善练习1

完善1:

给你n个数,分别是a[1],a[2],...,a[n]。求一个最长的区间[x,y],使得区间中的数(a[x],a[x+1],a[x+2],...,a[y-1],a[y])的和能被7整除。输出区间长度。若没有符合要求的区间,输出0。 1N50,0001 \leq N \leq 50,000 1a[i]1,000,0001 \leq a[i] \leq 1,000,000

#include <bits/stdc++.h>
using namespace std;
int book[7];
int a[55000],sum[55000];
int main(){
	memset(book,-1,sizeof book);
	book[0]=(1)______;
	int n;
	cin>>n;
	int ans=0;
	for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        (2)______;
    }
    for(int i=1;i<=n;i++){
        sum[i]%=7;
	}
    for(int i=1;i<=n;i++){
        if((3)______){
            book[(4)______]=i;
        }
        else ans=max(ans,(5)______);
    }
	cout<<ans<<endl;
	return 0;
}
  1. 1处应填( ){{ select(1) }}
  • 0
  • 1
  • 2
  • 7
  1. 2处应填( ){{ select(2) }}
  • sum[i]=a[i]
  • sum[i]=a[i]+a[i-1]
  • sum[i]+=a[i]
  • sum[i]=sum[i-1]+a[i]
  1. 3处应填( ){{ select(3) }}
  • book[sum[i]]==-1
  • book[i]==-1
  • book[sum[i]]!=-1
  • book[i]!=-1
  1. 4处应填( ){{ select(4) }}
  • i
  • sum[i]
  • a[i]
  • sum[i]+a[i]
  1. 5处应填( ){{ select(5) }}
  • sum[i]
  • book[sum[i]]
  • i-sum[i]
  • i-book[sum[i]]