AT_arc007_4 [ARC007D] 破れた宿題
题目描述
高桥君正在解答一道数学作业题,需要写出等差数列的初项和公差。
等差数列是指相邻两个数字之间的差为定值的数字序列,最前面的数字称为初项,数字间的定值称为公差,最后一个数字称为末项。
不过高桥君不小心把作业上的数列没有用空格或逗号分隔,而是直接作为一个由 $0$ 到 $9$ 组成的字符串抄在了笔记本上。
更糟糕的是,由于笔记本保存不当,笔记本的一部分被撕掉了。
被撕掉的部分只涉及初项和末项,但可以确认至少初项的一部分还保留着。
现在给定这样一个字符串,请你推测原来的等差数列,并输出其初项和公差。
初项和公差均为大于等于 $1$ 的整数。如果有多个解,请输出初项最小的那个;如果初项相同,则输出公差最小的那个。
另外,像 $003$ 或 $012$ 这样前面带有多余 $0$ 的数字不会出现在抄写下来的数列中。输入格式如下。
输入格式
输入仅一行,为等差数列的一部分,长度为 $N$ 的字符串。
字符串仅由 $0$ 到 $9$ 的数字组成。
输出格式
请输出推测出的等差数列的初项和公差,用空格分隔。
如果有多个解,输出初项最小的那个;如果初项相同,输出公差最小的那个。
最后请输出换行符。
说明/提示
测试数据分为以下 $4$ 种类型,每种类型的 $N$ 取值范围如下。
只要能对某一类型的所有测试数据输出正确答案,即使对其他类型输出错误,也会获得部分分数。
- level1($25$ 分):$1 \leq N \leq 4$
- level2($25$ 分):$1 \leq N \leq 6$
- level3($25$ 分):$1 \leq N \leq 200$
- level4($25$ 分):$1 \leq N \leq 1,000$
例如:
```
1
```
```
1 1
```
- 也有可能只是一个数字,前后没有被截断,此时最小的初项是 $1$。
- 公差可以是任意正整数,但最小的公差是 $1$。
```
0203
```
```
10 10
```
- $02$ 不是合法数字,所以 $2$ 不能作为初项。
- 初项 $10$ 的 $1$ 被截断,末项 $30$ 的 $0$ 被截断,原数列应为 $102030$。
```
456789101112131415
```
```
4 1
```
- 数列没有被截断,初项为 $4$,公差为 $1$。
```
579111315171921232
```
```
5 2
```
- 末项 $25$ 的 $5$ 被截断。
```
001131261391521651
```
```
100 13
```
- 初项 $100$ 和末项 $178$ 的一部分被截断。
由 ChatGPT 4.1 翻译