题目
【单选】把 1 到 1000 的所有整数按十进制写出,数字“1”总共出现了多少次( )。
答案:C
考点
整数与整除计数原理数学
解题思维
把 1~999 写成三位数(001, 002, …, 999),每一位上"1"都恰好出现 100 次,三位合计 300 次;再加上 1000 里的那一个"1",共 301。
常见错误
只在"百位"上数(得 100 或 1000 附近的错值);或者漏掉 1000 中的 1;也容易与"含 1 的数的个数"混淆(那是 271 个,正好是错选 B)。
详细解析(节选)
解析
本题考查按数位分类计数(逐位统计法)。
方法:把 1~999 补齐成三位数来看
将 1~999 写成 001, 002, …, 999,共 1000 个(含 000)三维字符串。对任意一个固定数位(个位 / 十位 / 百位),该位上取 0~9 的机会完全均等,所以:
每一位上出现数字 1 的次数 = 1000 ÷ 10 = 100
三个数位合计:100 × 3 = 300 次。
千万别把"000"多算
为了均等而补上的 000 里一个 1 也没有,不影响计数;真正被统计的仍是 1~999 里的 1。
加上 1000
1000 中有 1 个 数字 1(千位)。 总计 = 300 + 1 = 301,选 C。
其他选项为什么错
- A. 300:漏掉 1000 里的那一个 1;
- B. 271:这是"含 1 的整数个数",不是"数字 1 出现的次数"——两个概念必须分清(含 1 的数里还有 11、111 这类一次贡献多个 1 的);
- D. 320:把某一数位多算了一次(如把千位也按 100 次计)。
记忆点
- 逐位统计法(也叫"数字贡献法"):数字 d 在第 k 位上出现的次数 = ⌊n / 10^k⌋ 相关的分段公式,对任意范围都适用;
- 稳定结论:1~10^m − 1 中每个数字各出现 m·10^(m−1) 次(本题 m = 3 → 300);
- 注意区分"数字出现的次数"与"含有该数字的整数个数",这是本考点的经典双子问。
同考点真题
- 第 23 题· NOIP 2009 普及组初赛试题 · 答案 4看解析 →
- 第 27 题· NOIP 2010 普及组初赛试题 · 答案 tmp=1tmp=truep[j]p[r]=ip[j]+p[k]p[k]+p[j]1004看解析 →
- 第 24 题· NOIP 2012 提高组初赛试题 · 答案 16看解析 →
- 第 18 题· CSP 2021 入门级第一轮 · 答案 ABC看解析 →
- 第 14 题· CSP 2021 提高级第一轮 · 答案 C看解析 →