5065: 最长连续子序列

描述

给定一系列非负整数,求最长的连续子序列,使其和是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\n",maxx);
21     return 0;
22 }
View Code

 

 

 

posted @ 2019-04-09 21:12  厂长在线养猪  Views(255)  Comments(0Edit  收藏  举报