首页 > 试题广场 >

好奇的薯队长

[编程题]好奇的薯队长
  • 热度指数:3191 时间限制: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... 代码如 展开全文
头像 牛客229068068号
发表于 2025-08-14 22:08:43
def count_number1(s): count = 0 # 当前处理的位数是个位/十位/百位 factor = 1 # 如果还有其他的位数将一直执行,直到数位小于本来的数 while factor <= s : # 求数字的高 展开全文
头像 bandiaoz
发表于 2024-12-26 16:22:38
解题思路 这是一道数位统计题目,主要思路如下: 问题分析: 统计 到 中数字 出现的次数 的范围很大,需要优化算法 如 中包含 这些数字 需要统计每个位置上 出现的次数 解决方案: 按位计算,从个位开始 对每一位,分三种情况: 当前位是0 当前位是1 当前位大于1 展开全文
头像 丨阿伟丨
发表于 2025-09-18 15:51:10
题目链接 好奇的薯队长 题目描述 输入一个正整数 (),计算从 到 (包括 )的所有整数中,数字 '1' 一共出现了多少次。 例如,对于 ,包含 '1' 的数字有 。它们含 '1' 的个数分别为 ,总计 个。 解题思路 这是一个典型的数位 DP 问题。如果直接从 遍历到 ,对每个数进行判断,当 展开全文