题目描述
一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位…)上的数
字是奇数,偶数位(十位、千位、十万位…).上的数字是偶数,我们就称之为
“好数”。
给定一个正整数N,请计算从1到N一共有多少个好数。
输入格式
一个整数N。
输出格式
一个整数代表答案。
样例输入1
24
样例输出1
7
样例输入2
2024
样例输出2
150
样例说明
对于第一个样例,24以内的好数有1、3、5、7、9、21、23,一共7个。
评测用例规模与约定
对于10%的评测用例,1<N<100。
对于100%的评测用例,1≤N≤10⁷。
暴力
数据量过小,选择暴力遍历每个数的每一位
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, i, cnt = 0;
cin >> n;
//1~n
while (n > 0)
{
i = n;
//遍历每一位
while (i > 0)
{
// 不是奇数
if (i % 10 % 2 == 0)
{
break;
}
i /= 10;
// 不是偶数
if (i % 10 % 2 != 0)
{
break;
}
i /= 10;
}
// i=0说明每一位都满足条件
if (!i)
cnt++;
n--;
}
cout << cnt << endl;
return 0;
}