A. 好数

    传统题 1000ms 256MiB

好数

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

在数学课上,为了激发同学们对数字规律的探索兴趣,数学老师引入了一个名为“好数”的有趣概念。他详细解释道:对于一个正整数,如果从它的最低位(即个位)开始,逐位向高位检查,每一位上的数字都符合特定的奇偶性规则,那么这个数就被称为“好数”。具体规则如下:位于奇数位置上的数字(即从右向左数,第1位、第3位、第5位……,也就是个位、百位、万位等)必须是奇数(也就是只能为1、3、5、7、9);而位于偶数位置上的数字(即从右向左数,第2位、第4位、第6位……,也就是十位、千位、十万位等)必须是偶数(也就是只能为0、2、4、6、8)。需要注意的是,如果一个数的位数较少,那么较高位(左侧)视为不存在,因此只检查实际存在的位。例如,数字5只有个位,个位是奇数,所以它是好数;而数字10有个位0和十位1,个位是奇数位却为偶数,十位是偶数位却为奇数,因此不满足条件。 为了帮助同学们理解,数学老师举了一些例子:

  • 123:个位3(奇数,符合),十位2(偶数,符合),百位1(奇数,符合),所以是好数。
  • 2468:个位8(偶数,但奇数位要求奇数),不符合,所以不是好数。
  • 7:个位7(奇数,符合),没有其他位,所以是好数。
  • 100:个位0(偶数,不符合奇数位要求),所以不是好数。 数学老师提问:谁能想出一个高效的方法,找出从1到任意给定正整数N之间的所有好数?现在,请你编写一个程序解决这个问题:输入一个正整数NN,输出从1到NN(包含1和NN)中好数的个数。

输入格式

一个整数NN。(1N1071 ≤ N ≤ 10^7)

输出格式

一个整数代表答案。

输入输出样例

24
7

样例解释:对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个

2025年12月23日CCF GESP C++二级考前模拟—每日一题

未参加
状态
已结束
规则
IOI
题目
1
开始于
2025-12-23 0:00
结束于
2025-12-24 0:00
持续时间
24 小时
主持人
参赛人数
4