思路:枚举所有数,每个数分别判断。代码时间复杂度虽然是n^2,但是由于判断的数长度最长是7位,用字符串处理最多只循环7次,所以最大时间复杂度小 7*10的七次方,不会超时。库中的to_string时间复杂度太大,使用会超时。
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'bool charge(string x){int k = 1;int len = x.size();for(int i=0;i<len;i++){if(k%2==1&&x[i]%2==1){k++;continue;}else if(k%2==0&&x[i]%2==0){k++;continue;}else return false;}return true;
}string my_to_string(int x){string sx="";while(x){sx.push_back(x%10+'0');x/=10;}return sx;
}void solve(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int n;cin>>n;int ans=0;for(int i=1;i<=n;i++){if(charge(my_to_string(i)))ans++;}cout<<ans<<endl;
}signed main(){int T=1;while(T--)solve();return 0;
}