5065: 最长连续子序列
描述
给定一系列非负整数,求最长的连续子序列,使其和是7的倍数。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。输入
第一行为正整数N(1<=N<=50000),接下来有N行,每行有一个非负整数,所有整数不大于10^6。
输出
如果存在连续子序列,其和为7的倍数,则输出子序列长度,如果不存在则输出0。
样例输入
7 3 5 1 6 2 14 10
样例输出
5
题目来源
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
更多精彩