#include #include #include <unordered_map> using namespace std;

int main() { int n; cin >> n; vector nums(n); for (int i = 0; i < n; i++) { cin >> nums[i]; }

unordered_map<int, int> mp{{0, -1}}; // 前缀和为0的初始位置为-1
int sum = 0, res = 0;
for (int i = 0; i < n; i++) {
    sum = (sum + nums[i]) % 7;
    if (mp.count(sum)) { // 如果之前出现过该前缀和,则计算区间长度
        res = max(res, i - mp[sum]);
    } else {
        mp[sum] = i; // 记录该前缀和出现的位置
    }
}
cout << res << endl;

return 0;
C++给你n个数分别是a1a2an。求一个最长的区间xy使得区间中的数axax+1ax+2ay-1ay的和能被7整除。输出区间长度。若没有符合要求的区间输出0。输入描述:第一行一个整数n1=n=50000接下来是每一个整数。输出描述:一个最长的区间。给出源码

原文地址: https://www.cveoy.top/t/topic/gIIo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录