好数

一个整数如果按从低位到高位的顺序,奇数位 (个位、百位、万位 ⋯ ) 上的数字是奇数,偶数位 (十位、千位、十万位 ⋯ ) 上的数字是偶数,我们就称之为 “好数”。

给定一个正整数 N请计算从 1 到 N 一共有多少个好数。

#include <iostream>
using namespace std;

bool is_good(int num){
    int position = 1;
    int digit;

    while (num > 0) {
        digit = num % 10;
        if ((position % 2 == 1 && digit % 2 == 0) || (position % 2 == 0 && digit % 2 == 1)) {
            return false; // 不满足“好数”的条件
        }
        num /= 10;  // 去掉最低位
        position++; // 位数递增
    }
    return true;
}

int main(int, char **) {
    int n, s = 0;
    cin >> n;
    for (int i = 1; i < n; i++) {
        if(is_good(i))
            s++;
    }
    cout << s;
}
posted @ 2025-03-23 19:52  丘狸尾  阅读(49)  评论(0)    收藏  举报