题目大意:一个数的低位为奇数,次低位为偶数,以此类推的数成为好数,例如:1,3,5,7,9
给定一个n,求1-n所有好数的个数,n<=1e7
思路:一个个跑然后判断奇数偶数位,时间复杂度nlong8
代码:
- #include
- 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<
- if(ff)ans++;
- }
-
- cout<
-
-
- return 0;
- }
最后提一嘴:
这个爬山题也太难了吧,2 1 1 48 49这种样例咋做啊!!!期待官方std