首页 > 试题广场 >

好奇的薯队长

[编程题]好奇的薯队长
  • 热度指数:3100 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
薯队长在平时工作中需要经常跟数字打交道,某一天薯队长收到了一个满是数字的表格,薯队长注意到这些数字里边很多数字都包含1,比如101里边包含两个1,616里包含一个1。
请你设计一个程序帮薯队长计算任意一个正整数n(0<n<=2147483647),从1到n(包括n)的所有整数数字里含有多少个1。

输入描述:
正整数n(0<n<=2147483647)


输出描述:
从1到n(包括n)的所有整数数字里含有多少个1
示例1

输入

1

输出

1
示例2

输入

13

输出

6

说明

从1到13(包括13)有13个数字,其中包含1的数字有1,10,11,12,13,这些数字里分别有1,1,2,1,1个1,所以从1到13(包括13)的整数数字中一共有1+1+2+1+1=6个1
头像 never&doubt
发表于 2021-01-02 11:17:16
从个位开始依次统计每一位有多少个1 一共有n个数含有个位(必然都有个位),每10个数一个周期,每个周期内有1个1 一共有n-9个数含有十位(n减去一位数的数量),每100个数一个周期,每个周期内有10个1 一共有n-9-90个数含有百位,每1000个数一个周期,每个周期内有100个1... 代码如 展开全文