#B4310. [蓝桥杯青少年组国赛 2024] 第五题

    ID: 13688 远端评测题 1000ms 512MiB 尝试: 5 已通过: 1 显示难度普及 上传者: 标签>2024前缀和蓝桥杯青少年组

[蓝桥杯青少年组国赛 2024] 第五题

题目描述

给定包含 nn 个整数的数列,从中选取一段连续子数列,使其元素之和能被 kk 整除。

请找出符合要求的最长连续子数列并输出其长度以及子数列本身;如果符合要求的最长连续子数列有多个,则输出起始位置最靠后的那个子数列。如果不存在符合要求的子数列,则输出 −1-1。

例如:当 n=7n=7,k=7k=7,数列为 77、33、44、11、55、1414、99 时:

  • 连续子数列 {7}\{7\}、{7,3,4}\{7,3,4\}、{3,4}\{3,4\} 和 {5,14,9}\{5,14,9\} 的和都能被 77 整除;
  • 其中最长的连续子数列有 {7,3,4}\{7,3,4\} 和 {5,14,9}\{5,14,9\},起始位置最靠后的是 {5,14,9}\{5,14,9\};
  • 故符合要求的最长连续子数列长度为 33,子数列为 55 1414 99。

输入格式

  • 第一行输入两个整数 nn 和 kk(1≤n≤1051 \leq n \leq 10^5,2≤k≤1082 \leq k \leq 10^8),整数之间以一个空格隔开;
  • 第二行输入 nn 个整数(1≤1 \leq 整数 ≤104\leq 10^4),整数之间以一个空格隔开。

输出格式

如果存在符合要求的最长连续子数列,则输出为两行:

  1. 第一行输出一个整数,表示最长连续子数列的长度;
  2. 第二行输出若干个整数,表示起始位置最靠后的最长连续子数列,整数之间以一个空格隔开。

如果不存在符合要求的子数列,则输出 −1-1。

7 7
7 3 4 1 5 14 9
3
5 14 9