描述

给定一系列非负整数,求最长的连续子序列,使其和是7的倍数。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

输入

第一行为正整数N(1<=N<=50000),接下来有N行,每行有一个非负整数,所有整数不大于10^6。

输出

如果存在连续子序列,其和为7的倍数,则输出子序列长度,如果不存在则输出0。

样例输入

7 3 5 1 6 2 14 10

样例输出

5

题目来源

台州学院“达内杯”第九届大学生程序设计竞赛

 

5065: 最长连续子序列 随笔 第1张
 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

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄