#include #include <unordered_map> using namespace std;

int main() { int n; cin >> n; int sum = 0; unordered_map<int, int> mp; //记录前缀和模7的余数第一次出现的位置 mp[0] = 0; int ans = 0; for (int i = 1; i <= n; i++) { int num; cin >> num; sum = (sum + num) % 7; if (mp.count(sum)) { //如果当前前缀和模7的余数之前出现过,说明这一段区间的和能被7整除 ans = max(ans, i - mp[sum]); //更新最长区间长度 } else { mp[sum] = i; //记录前缀和模7的余数第一次出现的位置 } } cout << ans << endl; return 0; }

C++ 实现求最长区间和能被 7 整除

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

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