好数
这道题遍历进行判断就可以了
复杂度为O(n)
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int check(int x)
{
int bit = 1;//表示当前遍历到第一位
while(x)
{
if(x % 10 % 2&& bit % 2 == 0) return 0; //如果这一位是奇数,但是这是个偶数位,返回0
else if(x % 10 % 2 == 0 && bit % 2 == 1) return 0; //如果这一位是偶数,但是这是个奇数位,返回0
x /= 10;
bit ++;
}
return 1;//这个数是一个好数
}
int main()
{
int n;
cin >> n;
int num = 0;
for(int i = 1; i <= n; i ++)
{
num += check(i);
}
cout << num << endl;
return 0;
}