AT_abc382_d [ABC382D] Keep Distance

题目描述

给定整数 $N$ 和 $M$。 请按字典序输出所有满足以下条件的长度为 $N$ 的整数序列 $(A_1,\ A_2,\ \ldots,\ A_N)$。 - $1 \leq A_i$ - 对于所有 $2 \leq i \leq N$,有 $A_{i-1} + 10 \leq A_i$ - $A_N \leq M$ 数列的字典序定义如下:长度为 $N$ 的数列 $S = (S_1,\ S_2,\ \ldots,\ S_N)$ 比长度为 $N$ 的数列 $T = (T_1,\ T_2,\ \ldots,\ T_N)$ 字典序小,当且仅当存在某个整数 $1 \leq i \leq N$,满足以下两个条件: - $(S_1,\ S_2,\ \ldots,\ S_{i-1}) = (T_1,\ T_2,\ \ldots,\ T_{i-1})$ - $S_i$ 小于 $T_i$(作为数值比较)。

输入格式

输入从标准输入读入,格式如下: > $N$ $M$

输出格式

设满足条件的长度为 $N$ 的整数序列有 $X$ 个,请输出 $X+1$ 行。 第 $1$ 行输出 $X$。 接下来的第 $i+1$ 行($1 \leq i \leq X$),输出按字典序排列的第 $i$ 小的满足条件的整数序列,各元素用空格分隔。

说明/提示

### 限制条件 - $2 \leq N \leq 12$ - $10N - 9 \leq M \leq 10N$ - 输入的所有数值均为整数 ### 样例解释 1 满足条件的 $10$ 个数列为 $(1,\ 11,\ 21),\ (1,\ 11,\ 22),\ (1,\ 11,\ 23),\ (1,\ 12,\ 22),\ (1,\ 12,\ 23),\ (1,\ 13,\ 23),\ (2,\ 12,\ 22),\ (2,\ 12,\ 23),\ (2,\ 13,\ 23),\ (3,\ 13,\ 23)$。 由 ChatGPT 4.1 翻译