AT_ndpc2026_p LIS
题目描述
给定一个正整数 $n$,定义 $f(n)$ 如下:
- 设 $n$ 的十进制表示共有 $d$ 位,定义长度为 $d$ 的序列 $A = (A_1, \dots, A_d)$,其中:
- $A_i$ 是 $n$ 在十进制下从左往右的第 $i$ 位数字。
- $f(n)$ 为序列 $A$ 的最长严格递增子序列的长度。
例如,$f(347) = 3$,$f(1192) = 2$,$f(10123456789) = 10$,$f(11111) = 1$。
现给定一个正整数 $N$,请你计算有多少个正整数 $x$,使得对 $x$ 重复多次进行 $x \to x + f(x)$ 操作(可以不做任何操作),最终能够得到 $N$。
给定 $T$ 组测试数据,请分别求解。
输入格式
输入通过标准输入给出,格式如下:
> $T$ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $
每组测试数据输入格式如下:
> $N$
输出格式
输出共 $T$ 行,第 $i$ 行输出第 $i$ 组测试数据的答案。
说明/提示
### 样例解释 1
例如在第二组测试数据中,可以从 $x = 102$ 开始,通过重复进行 $x \to x + f(x)$ 操作:
- $102 \to 104 \to 106 \to 108 \to 110$
能够得到 $N = 110$。满足条件的 $x$ 为 $102, 104, 106, 108, 110$,一共有 $5$ 个。
### 数据范围
- $1 \leq T \leq 2 \times 10^4$
- $1 \leq N \leq 10^{18}$
- 所有输入均为整数。
由 ChatGPT 5 翻译