Farmer John's N cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to take a photo of a contiguous group of cows but, due to a traumatic childhood incident involving the numbers 1…6, he only wants to take a picture of a group of cows if their IDs add up to a multiple of 7.
Please help FJ determine the size of the largest group he can photograph.
给你n个数,分别是a[1],a[2],...,a[n]。求一个最长的区间[x,y],使得区间中的数(a[x],a[x+1],a[x+2],...,a[y-1],a[y])的和能被7整除。输出区间长度。若没有符合要求的区间,输出0。
The first line of input contains N (1≤N≤50,000). The next N
lines each contain the N integer IDs of the cows (all are in the range
0…1,000,000).
Please output the number of cows in the largest consecutive group whose IDs sum
to a multiple of 7. If no such group exists, output 0.
7
3
5
1
6
2
14
10
5
In this example, 5+1+6+2+14 = 28. #include<bits/stdc++.h> using namespace std; const int N=1e5+1; long long int n,mx,a[N],sum[N];
signed main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; sum[i]=sum[i-1]+a[i]; }
for(int l=1;l<=n;l++){
for(int r=l+mx;r<=n;r++){
if((sum[r]-sum[l-1])%7==0)
mx=r-l+1;
}
}
cout<<mx;
return 0;
}