#include #include using namespace std;

int main() { int n; cin >> n; vector a(n+1, 0); vector pre(n+1, 0); // pre[i]表示前i个数的前缀和 for (int i = 1; i <= n; i++) { cin >> a[i]; pre[i] = pre[i-1] + a[i]; pre[i] %= 7; // 取模,避免整型溢出 } int ans = 0; vector last(7, -1); // last[i]表示前缀和为i的最后一个位置 for (int i = 0; i <= n; i++) { // 枚举右端点y if (last[pre[i]] != -1) { int len = i - last[pre[i]]; ans = max(ans, len); } else { last[pre[i]] = i; } } cout << ans << endl; return 0;

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

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

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