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