#P16862. [SGU442]X + R(X) = N
[SGU442]X + R(X) = N
- 来源:SGU 442
- 难度估计:CF 2700 左右(2600~2800)
- 类型:数位构造 / 进位分析 / 组合计数 / 高精度
- 时间限制:0.75 s
- 空间限制:262144 KB
入选理由
最多可有约 位,因此不可能枚举 ,甚至不能把 放入普通整数类型。
核心难点是从 的首尾向中间推导十进制加法中的进位:当 的位数确定后,每一对对称数位的“未进位和”实际上被强制确定。之后还需要计算每个数位和对应多少种有序数字对,并处理最高位不能为零、中间位、自身对称以及 等特殊情况。最终方案数本身也可能极大,需要高精度整数。
这是一道典型的“结构观察比代码模板更重要”的高难数位构造题。
题目描述
对于一个正整数 ,定义 为把 的十进制数字顺序反转后得到的整数。
例如:
现在给定一个正整数 ,请计算有多少个正整数 满足
输入格式
输入包含多组测试数据。
每组测试数据占一行,包含一个正整数 。
一行只包含单个 0 时表示输入结束,该行不需要处理。
可能非常大,最多约有 个十进制数字,因此必须以字符串形式读入。
输出格式
对于每组测试数据,输出一行一个整数,表示满足
的正整数 的个数。
不要输出前导零。
样例输入
1
2
11
13
14003
767513456469789456166547987979741366664879441
0
样例输出
0
1
1
0
60
0
说明
由于答案也可能远超 64 位整数范围,因此实现时需要支持任意精度非负整数计数。