#D0886. 校验码

校验码

题目描述

小 C 正在检查实验室中的一台双通道能量装置。

装置中保存着两个非负整数参数 AABB,并且保证 ABA \ge B。为了生成校验码,装置会进行以下计算:

X=ABX=A-B Y=A+BY=A+B

随后,装置会将 XXYY 的十进制表示直接连接起来,得到校验码 CC。中间不会添加任何分隔符。

例如,当 A=6,B=4A=6,B=4 时:

X=64=2X=6-4=2 Y=6+4=10Y=6+4=10

因此生成的校验码为 210

现在,小 C 只知道校验码 CC,但不知道应该从哪个位置将它分成 XXYY。请计算有多少对不同的非负整数 (A,B)(A,B) 可以生成这个校验码。

所有整数都使用标准十进制表示,即除数字 00 本身外,不包含前导零。

输入格式

输入一行,包含一个正整数 CC,表示装置生成的校验码。

输出格式

输出一个整数,表示能够生成校验码 CC 的不同参数对 (A,B)(A,B) 的数量。

样例

3161
2
37
1
202
0

样例解释

样例 1 中,存在两组参数:

  • A=46,B=15A=46,B=15,此时 X=31,Y=61X=31,Y=61,校验码为 3161
  • A=82,B=79A=82,B=79,此时 X=3,Y=161X=3,Y=161,校验码同样为 3161

共有 22 种可能。

样例 2 中,唯一参数为 A=5,B=2A=5,B=2,此时 X=3,Y=7X=3,Y=7,校验码为 37

样例 3 中,校验码为 202。若分割成 202,则 YY0 开头,不合法。若分割成 202,则 Y<XY<X,不满足 ABA\ge B。所以没有合法分割。

数据范围与约定

子任务 分值 限制
11 3030 保证 CC 恰好包含 22 位数字
22 保证 C<1018C < 10^{18}
33 4040 无特殊限制

对于 100%100\% 的数据,保证 10C<1050010 \le C < 10^{500},并且 CC 不包含前导零。