#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++ 最长可被7整除的区间长度

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

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