#BW7. 好数
好数
题目描述
在数学课上,为了激发同学们对数字规律的探索兴趣,数学老师引入了一个名为“好数”的有趣概念。他详细解释道:对于一个正整数,如果从它的最低位(即个位)开始,逐位向高位检查,每一位上的数字都符合特定的奇偶性规则,那么这个数就被称为“好数”。具体规则如下:位于奇数位置上的数字(即从右向左数,第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之间的所有好数?现在,请你编写一个程序解决这个问题:输入一个正整数,输出从1到(包含1和)中好数的个数。
输入格式
一个整数。()
输出格式
一个整数代表答案。
输入输出样例
24
7
样例解释:对于第一个样例,24 以内的好数有 1、3、5、7、9、21、23,一共 7 个