CF625D Finals in arithmetic

题目描述

Vitya 是三年级的学生。在上一节数学课上,所有的学生都做了一份算术测验卷。Vitya 很聪明,所以他很快就完成了所有题目,Oksana Fillipovna 又给了他一道更难的新题。 我们定义整数的反转操作如下:将数字用十进制表示,然后逆序排列。如果反转后有前导零,则丢弃。举例来说,反转 $123$ 的结果为 $321$,而反转 $130$ 得到 $31$,反转 $31$ 得到 $13$。 Oksana Fillipovna 选定了一个没有前导零的数字 $a$,将其反转得到 $a_{r}$。然后她令 $a+a_{r}=n$,并告诉 Vitya 这个 $n$ 的数值。Vitya 的目标是找出任意一个满足条件的 $a$。 由于 Oksana Fillipovna 选择的 $a$ 和 $a_{r}$ 都是较小的整数,Vitya 很快就找出了答案,并开始思考是否有通用算法来解决这个问题。现在,他希望你编写程序,给定 $n$,找出没有前导零的 $a$,使得 $a+a_{r}=n$,或者判断这样的 $a$ 不存在。

输入格式

输入的第一行包含一个整数 $n$($1 \leq n \leq 10^{100000}$)。

输出格式

如果不存在正整数 $a$,且满足 $a$ 没有前导零并且 $a+a_{r}=n$,则输出 $0$。否则,输出任意一个满足条件的 $a$。如果有多个答案,输出其中任意一个均可。

说明/提示

在第一个样例中,$4=2+2$,只有 $a=2$ 是合法的解。 在第二个样例中,$11=10+1$,$a=10$ 是唯一的合法解。注意 $a=01$ 不合法,因为 $a$ 不能有前导零。 很容易验证,第三个样例不存在满足条件的 $a$。 在第四个样例中,$33=30+3=12+21$,因此 $a$ 的合法取值有 $30$、$12$、$21$,输出任意一个都对。 由 ChatGPT 5 翻译