设函数 f(n) 表示区间 [1,n] 中十进制下首尾数字相等的整数个数,则答案可表示为
答案=f(R)−f(L−1)因此问题转化为如何快速计算 f(n)。
给定两个正整数 L 和 R,请你统计区间 [L,R] 中有多少个整数,在十进制下满足首位数字与末位数字相等。例如 101、22、9 均满足条件,而 10、123、48 不满足。
保证 L 和 R 满足 1≤L≤R≤1018。
一行,包含两个整数 L 和 R,中间用一个空格分隔,表示区间的左右端点。
输出一个整数,表示区间 [L,R] 中满足条件的整数个数。
输入
1 1000
输出
108
说明
一位数 1 到 9(共 9 个)均满足首位等于末位。
两位数中,首位与末位相同的数有 11,22,...,99,共 9 个。
三位数中,首位 d 的取值范围为 1 到 9,末位必须与首位相同,中间一位可自由取 0 到 9,因此对每个 d 有 10 个满足的数,共计 9×10=90 个。
总计 9+9+90=108。
输入
9 22
输出
3
说明
在区间 [9,22] 内,满足首位等于末位的数字有:9(一位数)、11、22,共 3 个。
输入
100 200
输出
10
说明
区间 [100,200] 内的三位数,若首位为 1 且末位也为 1,则中间一位可为 0 到 9,即 101,111,121,...,191,共 10 个。其他数均不满足条件。
输入
10 10
输出
0
说明
10 的首位为 1,末位为 0,两者不相等,因此不满足条件,结果为 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册