要注意的点
这里有三个要注意的点:
1. count 函数内位数循环从not x
开始:如果 x 为 0,则从第 1 位开始(因为首位不能是 0),否则从 0 开始
2. 因为 python 的原因,省掉了 num
函数,使用字符串切片转 int 来替代。但是,需要先对切片做一个判断,检查是否为空。
3. 即使为空,在 seq[i]==x
等于时那个 1 仍然要加(可以想一下 10 第 1 位里面找 0 的操作)
Python 代码
def count(n, x):
if not n:
return 0
cnt = 0
seq = str(n)
l = len(seq)
for i in range(not x, l):
if i:
cnt += (int(seq[:i])) * pow(10, l - i - 1)
if not x:
cnt -= pow(10, l - i - 1)
if int(seq[i]) == x:
if seq[i + 1:]:
cnt += int(seq[i + 1:])
cnt += 1
elif int(seq[i]) > x:
cnt += pow(10, l - i - 1)
return cnt
def solution():
while 1:
a, b = map(int, input().split())
if a == b == 0:
break
res = []
for i in range(0, 10):
if a > b:
a, b = b, a
res.append(count(b, i) - count(a - 1, i))
print(' '.join(map(str, res)))
if __name__ == '__main__':
solution()