描述
给定一系列非负整数,求最长的连续子序列,使其和是7的倍数。
输入
第一行为正整数N(1<=N<=50000),接下来有N行,每行有一个非负整数,所有整数不大于10^6。
输出
如果存在连续子序列,其和为7的倍数,则输出子序列长度,如果不存在则输出0。
样例输入
样例输出
题目来源
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 ios::sync_with_stdio(false); 6 int n,d,ans=0,flag=0,a[7],b[7]; 7 memset(a,0,sizeof(a)); 8 memset(b,0,sizeof(b)); 9 cin>>n; 10 for(int i=1;i<=n;i++){ 11 cin>>d; 12 ans=(ans+d)%7; 13 a[ans]=i; //余数的位置 14 if(!b[ans]&&ans) b[ans]=i; 15 } 16 int maxx=0; 17 for(int i=0;i<=6;i++){ 18 maxx=max(maxx,a[i]-b[i]); 19 } 20 printf("%d ",maxx); 21 return 0; 22 }