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