寻找能被k整除的最长连续子数列
类型:程序题

题目描述

给定包含n个整数的数列,从中选取一段连续子数列,使其元素之和能被k整除。 请找出符合要求的最长连续子数列并输出其长度以及子数列本身;如果符合要求的最长连续子数列有多个,则输出起始位置最靠后的那个子数列。如果不存在符合要求的子数列,则输出-1。

例如:n=7,k=7,数列为7、3、4、1、5、14、9; 连续子数列{7}、{7, 3, 4}、{3, 4}、和{5, 14, 9}的和都能被7整除; 其中最长的连续子数列有{7, 3, 4}和{5, 14, 9}, 起始位置最靠后的是{5, 14, 9}。 故符合要求的最长连续子数列长度为3,子数列为5 14 9。

输入描述

第一行输入两个整数n和k($1 \leq n \leq 10^5, 2 \leq k \leq 10^8$),整数之间以一个空格隔开。 第二行输入n个整数($1 \leq 整数 \leq 10^4$),整数之间以一个空格隔开。

输出描述

如果存在符合要求的最长连续子数列,则输出为两行: 第一行输出一个整数,表示最长连续子数列的长度。 第二行输出若干个整数,表示起始位置最靠后的最长连续子数列,整数之间以一个空格隔开。 如果不存在,则输出-1。

输入样例

7 7
7 3 4 1 5 14 9

输出样例

3
5 14 9
代码编辑器 加载中...
测试用例(F10) 运行测试(F11) 提交答案(F12)
测试用例输入
{{resultStatus.text}}