题目大意:一个数的低位为奇数,次低位为偶数,以此类推的数成为好数,例如:1,3,5,7,9
给定一个n,求1-n所有好数的个数,n<=1e7
思路:一个个跑然后判断奇数偶数位,时间复杂度nlong8
代码:
#include<bits/stdc++.h>
using namespace std;
int n,ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
// 用于判断该数是不是好数
bool f=true,ff=true;
int num=i;
while(num){
if(f){
if(num&1)f=false;
else{
ff=false;
break;
}
}
else{
if(num&1){
ff=false;
break;
}else f=true;
}
num/=10;
}
// 输出所有好数
// if(ff)cout<<i<<endl;
if(ff)ans++;
}
cout<<ans<<endl;
return 0;
}
最后提一嘴:
这个爬山题也太难了吧,2 1 1 48 49这种样例咋做啊!!!期待官方std