AT_stpc2025_2_l Avoid Multiple
题目描述
给定一个长度为 $N$ 的正整数序列 $A=(A_1,A_2,\ldots,A_N)$。初始时,保证 $A$ 中不包含 $M$ 的倍数。
你需要进行 $N-1$ 次如下操作:
1. 选择一个整数 $i$,满足 $1 \le i \le |A|-1$;
2. 将 $A_i$ 和 $A_{i+1}$ 相加,合并为一个元素;
- 更具体地,将 $A$ 替换为 $(A_1 ,\ldots,A_{i-1}),(A_{i}+A_{i+1}),(A_{i+2},\ldots,A_{|A|})$ 的顺次连接。
- 这样操作后,$A$ 的长度会减少 $1$。
请判断能否在操作过程中始终保证 $A$ 中不会出现 $M$ 的倍数,并完成 $N-1$ 次操作。若可以,请构造一组合法的操作序列。
输入格式
输入格式如下:
> $N\ M\ A_1\ A_2\ \cdots\ A_N$
输出格式
如果不存在满足条件的操作序列,请输出一行 `No`。
如果存在,请输出两行。第一行为 `Yes`,第二行为每次操作选择的 $i$,依次用空格分隔。
若存在多组可行解,输出任意一组均可。
说明/提示
### 样例解释 1
对于该输入,对于初始 $A=(1,2,3,1)$:
- 第一次操作选择 $i=2$,此时 $A=(1,5,1)$。
- 第二次操作选择 $i=1$,此时 $A=(6,1)$。
- 第三次操作选择 $i=1$,此时 $A=(7)$。
在此操作过程中,$A$ 中都不会出现 $4$ 的倍数。
### 数据范围
- 所有输入均为整数。
- $3 \le N \le 2\times 10^5$
- $2 \le M \le 10^9$
- $1 \le A_i < M$
- $A_i$ 不是 $M$ 的倍数。
由 ChatGPT 5 翻译