P17726 最短公共超串?

题目背景

本题征集**人类**题解。

题目描述

给定正整数 $n$($n \ge 10$),求将 $1, 2, \ldots, n$ 视作无前导零的十进制数码串后,这些数码串的最短公共超串的长度 $L(n)$。 :::info[最短公共超串] 对于有限个字符串 $S_1, S_2, \ldots, S_k$,若字符串 $T$ 含有每个 $S_i$($1 \le i \le k$)作为连续子串,则称 $T$ 为它们的公共超串。 $S_1, S_2, \ldots, S_k$ 的最短公共超串是满足条件的 $T$ 中长度最短的那些。由于 $S_1 S_2 \cdots S_k$(即将每个 $S_i$ 顺次拼接)是它们的一个公共超串,它们的最短公共超串总是存在。所有的最短公共超串的长度相同。 :::

输入格式

**本题包含多组测试数据。** 第一行,一个正整数 $T$,表示测试数据组数。对于每组测试数据: - 第一行,一个正整数 $n$。

输出格式

对于每组测试数据,输出一行,一个整数 $L(n)$,表示最短公共超串的长度。

说明/提示

**【样例解释 \#1】** 对于 $n = 21 \sim 30$,对应的一个最短公共超串分别是: - $101120131415161718219$; - $1011201314151617182219$; - $101120131415161718219223$; - $10112013141516171821922324$; - $1011201314151617182192232425$; - $101120131415161718219223242526$; - $10112013141516171821922324252627$; - $1011201314151617182192232425262728$; - $101120131415161718219223242526272829$; - $1011201301415161718219223242526272829$。 长度分别为 $21, 22, 24, 26, 28, 30, 32, 34, 36, 37$。 **【数据范围】** **本题各个测试点的分数不等。** | 测试点编号 | $T$ | $n$ | 特殊性质 | 分数 | |:--:|:--:|:--:|:--:|:--:| | $1 \sim 41$ | $= 1$ | $= 9 \hspace{4mu} +$ 测试点编号 | 无 | $1$ | | $42$ | $= 50$ | $\le 100$ | ^ | $10$ | | $43$ | $\le 1000$ | $\le 1000$ | ^ | $5$ | | $44$ | $\le 10^5$ | $\le 10^5$ | ^ | $5$ | | $45$ | ^ | $\le 10^{18}$ | A | $5$ | | $46$ | ^ | ^ | B | $5$ | | $47$ | ^ | ^ | C | $5$ | | $48$ | ^ | ^ | D | $5$ | | $49$ | ^ | ^ | E | $9$ | | $50$ | ^ | ^ | 无 | $10$ | - 特殊性质 A:存在正整数 $k$ 使得 $n = 10^k$。 - 特殊性质 B:存在正整数 $k$ 使得 $n = 10^k - 1$。 - 特殊性质 C:存在正整数 $k$ 使得 $n = 10^k + 1$。 - 特殊性质 D:存在正整数 $k$ 使得 $n = 2 \times 10^k - 1$。 - 特殊性质 E:存在正整数 $k$ 使得 $n \in [0.99 \times 10^k, 10^k]$。 对于所有测试点,$1 \le T \le 10^5$,$10 \le n \le 10^{18}$。