#P1831. 杠杆数(Lever Numbers)

0

杠杆数(Lever Numbers)

杠杆数(Lever Numbers)

题目描述

如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数。

比如 41394139 就是杠杆数,把 33 当成支点,我们有这样的等式:4×2+1×1=9×14\times 2+1\times 1=9\times 1。

给定区间 [x,y][x,y],求出在 [x,y][x,y] 中有几个杠杆数。

输入格式

两个数,表示 x,yx,y。

输出格式

一个输出,表示区间 [x,y][x,y] 中杠杆数的个数。

样例输入 #1

7604 24324

样例输出 #1

897

数据范围

数据范围及约定

  • 对于 40%40\% 的数据,x≤y≤x+105x \le y \le x+10^5;
  • 对于 100%100\% 的数据,1≤x≤y≤10181 \le x \le y \le 10^{18}。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1900。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~8 小规模 x,y≤10^5 / 特殊: 1~9一位数全为杠杆数 / 特殊: x=y单数判定
2 15 9~11 Hack: 全0数码防多支点重复计数 / Hack: x=1,y=10^18满19位极值 / Hack: 对称回文数区间
3 30 12~20 中规模 y≤10^12 / 大规模 1≤x≤y≤10^18 枚举支点数位DP压力
4 25 21~25 随机 1≤x≤y≤10^18 回归

出处:原题链接