Description
Anica 做了一个很奇怪的梦:她梦见了一个无限大的平板,平板上填着无限行和无限列的整数。有趣的是,每个整数在那神奇的平板上只出现有限的次数。
机智的Anica很快便发现了这其中数字的规律,每一行第一列的数字表示当前的行号,其它非第一列的数字,为该位置左边一列的数字加上其数字的翻转数字之和。为了方便描述,我们定义A[i,j]表示平板上第i行第j列的数字:
1. A[i,1] = i,
2. A[i,j] = A[i,j-1] + Rev( A[i,j-1] ), 其中Rev(x)表示x在10进制下的翻转,例如Rev(213) = 312, Rev(406800) = 008604 = 8604 。
然而,Anica对这堆数字不太感兴趣。她看了一下平板的背面,并发现了一盏神灯,同时神灯也发现了Anica,这时一个精灵冒了出来:
精灵:“Anica,如果你能答对我Q个问题,你将获得一份神秘的礼物,否则你将无法无法醒来,哈哈哈哈~~”
精灵:“每个问题将给你两个整数A和B,请问区间[A,B]的数字总共在平板上出现了多少次?”
Anica:“我不想要你的礼物,我只想要醒过来,我还有很多事情要做呢!”
Input
第一行给出一个整数Q (1 <= Q <=10^5),表示问题的数量。
接下来Q行,每行两个整数A,B (1 <= A,B <= 10^10),表示每个询问的区间[A,B]。
Output
输出Q行,第i行一个整数,表示第i个询问的答案。
Sample Input
样例输入1:
2
1 10
5 8
样例输入2:
3
17 144
121 121
89 98
样例输入3:
1
1 1000000000
Sample Output
样例输出1:
18
8
样例输出2:
265
25
10
样例输出3:
1863025563
Data Constraint
50%的分数保证1 <= A,B <= 10^6。
50%算法
对于一个数x,x+Rev(x)是固定的
因此,对于第i行中连续的两个数a,b(i < a),有A[a,2]=b
所以可以设f[i]为i出现的次数,i=x+Rev(x),f[i]= ∑(f