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 翻译