题解:B3978 [信息与未来 2024] 幸运数字

· · 题解

一,ACCCCCCCcode

#include <bits/stdc++.h>
using namespace std;

bool xynumber(int p) {
    if (p <= 1) {
        return 0;
    }//判断特例
    int k = p % 2;
    p /= 2;
    if (p % 2 != k) {
        return 0;
    }//起始和终点单独判断
    while (p > 1) {
        if (p % 2 == p / 2 % 2 || p % 2 == k) {
        //前面和后面是否为同一比特位
        } else {
            return 0;
        }
        k = p % 2;
        p /= 2;
        //分解
    }
    if (p % 2 != k) {
        return 0;
    }
    return 1;//返回
}

int main() {
    int a, b;
    cin >> a >> b;
    //输入
    int ans = 0;
    for (int i = a; i <= b; i++) {
        if (xynumber(i) == 1) {
//          cout << i << endl;
            ans++;
        }
    }//运用函数
    cout << ans;
    //输出
    return 0;
}