C++给你n个数分别是a1a2an。求一个最长的区间xy使得区间中的数axax+1ax+2ay-1ay的和能被7整除。输出区间长度。若没有符合要求的区间输出0。输入描述:第一行一个整数n1=n=50000接下来是每一个整数。输出描述:一个最长的区间。给出源码
#include
int main() {
int n;
cin >> n;
vector
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;
原文地址: https://www.cveoy.top/t/topic/gIIo 著作权归作者所有。请勿转载和采集!