1.先求前缀和,并对7取余(若两个数相减%7==0,那么这两个数%7的余数一定相同).
2.只要求出相同的一个余数第一次和最后一次之间的长度即是最长长度!(但是并不知道哪个余数的长度更大).
3. 所以枚举0~6 共7个余数各自的最长长度,再在他们7个里找最长的!
附ac代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//统计7个余数最先最后出现的位置
ll N, B[50005], bg[
1.先求前缀和,并对7取余(若两个数相减%7==0,那么这两个数%7的余数一定相同).
2.只要求出相同的一个余数第一次和最后一次之间的长度即是最长长度!(但是并不知道哪个余数的长度更大).
3. 所以枚举0~6 共7个余数各自的最长长度,再在他们7个里找最长的!
附ac代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//统计7个余数最先最后出现的位置
ll N, B[50005], bg[