用dp[i]记录以第i个元素作为序列的开始。遍历一遍原始序列nums,对于第K个值,将大于maxLen的序列dp[i]+nums[k],判断是否为K的倍数,更新maxLen的值。 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); in.nextLine(); int[] nums = new int[n]; for (int i = 0; i < n; i++) nums[i] = in.nextInt(); in.nextLine(); int k = Integer.valueOf(in.nextLine()); int maxLen = 0; int[] dp = new int[n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i - maxLen; j++) { dp[j] += nums[i]; if (dp[j] % k == 0 && (i - j + 1) > maxLen) { maxLen = (i - j) + 1; break; } } } System.out.println(maxLen); in.close(); }
点赞 2

相关推荐

牛客网
牛客企业服务