题目大意:一个数的低位为奇数,次低位为偶数,以此类推的数成为好数,例如: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