首页 > 试题广场 >

页码统计

[编程题]页码统计
  • 热度指数:2875 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛新买了一本算法书,算法书一共有n页,页码从1到n。牛牛于是想了一个算法题目:在这本算法书页码中0~9每个数字分别出现了多少次?

输入描述:
输入包括一个整数n(1 ≤ n ≤ 1,000,000,000)


输出描述:
输出包括一行10个整数,即0~9这些数字在页码中出现的次数,以空格分隔。行末无空格。
示例1

输入

999

输出

189 300 300 300 300 300 300 300 300 300
def count_digit(n, x):
    high = n // 10
    cur = n % 10
    low = 0
    digit = 1
    res = 0
    while high != 0 or cur != 0:
        if 0 <= cur < x:
            res += high * digit
        elif cur == x:
            if x == 0:
                res += (high - 1) * digit + low + 1
            else:
                res += high * digit + low + 1
        elif cur > x:
            if x == 0:
                res += high * digit
            else:
                res += (high + 1) * digit
        low += cur * digit
        cur = high % 10
        high //= 10
        digit *= 10
    return res


if __name__ == '__main__':
    n = int(input())
    for i in range(9):
        print(count_digit(n, i), end=' ')
    print(count_digit(n, 9), end='')
发表于 2021-03-13 13:42:18 回复(0)
def pcount(xn):
    a, b, c, i, m = 10010
    while a:
        k = x // i
        a = k // 10
        b = k % 10
        c = x % i
        if n > b:
            m += a * i
        elif n == b:
            m += ((a-bool(n==0)) * i + c + 1)
        else:
            m += (a + bool(n)) * i
        i *=10
    return m

inum = int(input())
onum = str(pcount(inum, 0))
for j in range(110):
    onum += (' ' + str(pcount(inum, j)))
print(onum)


编辑于 2020-04-07 16:26:49 回复(0)

热门推荐

通过挑战的用户