AT_arc055_d [ARC055D] 隠された等差数列

题目描述

[problemUrl]: https://atcoder.jp/contests/arc055/tasks/arc055_d Firmino 有一个正整数 $d$(长度为 $N$),我们将其十进制表示从左到右(从高位到低位)的各位依次记为 $d_0,d_1,\cdots,d_{N-1}$。 Firmino 说,这个整数背后隐藏着一个由非负整数组成的等差数列 $\{a_i\}$。具体来说,取非负整数 $A,B$ 和正整数 $X$,定义数列 $$ a_i=\begin{cases} A, & i=0 \\ a_{i-1}+B & i>0 \end{cases} $$ 并且,这个数列满足:对于 $i=0,1,\cdots,N-1$,$a_i$ 的十进制表示中(**从右往左数的**)第 $X$ 位等于 $d_i$。形式化地,$\forall i\in [0,N-1]$,都有 $\displaystyle d_i=\left\lfloor\frac{a_i}{10^{x-1}}\right\rfloor \bmod 10$。例如,$114$ 的第 $1$ 位是 $4$,第 $2$ 位和第 $3$ 位都是 $1$。 Firmino 想问你,满足上述条件的等差数列中,首项(即 $A$)的最小值是多少。由于他在脑海中只用了不到 $0.5\mathrm{s}$ 就算出来了,所以他要求你在 $5\mathrm{s}$ 内完成计算。 如果不存在满足条件的等差数列,输出 `-1`。

输入格式

一行一个正整数 $d$。

输出格式

一行一个非负整数 $A$,表示满足条件的等差数列的首项最小值。 如果不存在满足条件的等差数列,输出 `-1`。

说明/提示

样例 1 解释:取 $A=6,B=3,X=1$ 满足条件。可以证明这是最小的首项。 样例 2 解释:取 $A=61,B=31,X=2$ 满足条件。可以证明这是最小的首项。 对于 $100\%$ 的数据,保证 $1\le N\le 10^4$,且 $d$ 不含前导零。 $\texttt{Statement fixed by Starrykiller.}$ 由 ChatGPT 4.1 翻译