C++使用前缀和实现给你n个数分别是a1a2an。求一个最长的区间xy使得区间中的数axax+1ax+2ay-1ay的和能被7整除。输出区间长度。若没有符合要求的区间输出0。输入描述第一行一个整数n1=n=50000接下来是每一个整数输出描述一个最长的区间
示例1
输入 5 1 2 3 4 5
输出 2
示例2
输入 5 1 2 3 4 6
输出 3
说明 在第二个样例中,最长的区间是[2,4],其和为2+3+4=9,能被7整除。
思路:用前缀和来维护子区间和,用哈希表记录模7余数第一次出现的位置,如果后面再次出现相同的模7余数,那么这两个位置之间的子数组之和模7余数为0。
C++ 代码
原文地址: http://www.cveoy.top/t/topic/fKT7 著作权归作者所有。请勿转载和采集!