题解:P10999 [蓝桥杯 2024 省 Python B] 穿越时空之门

· · 题解

这是本题的第一份题解,也是我的第一份题解。

题目传送门

题意

对于 1\sim2024 的每个数,问:有多少个数符合以下条件:

思路

首先,定义 cnt 变量,写一个循环,对1\sim2024每个数转成二进制和四进制。

然后,统计数位之和是否相等,相等则将 cnt 变量加 1 。

最后输出 cnt 即可。

代码

c++

#include <bits/stdc++.h>
#define int long long
using namespace std;
int cnt;
int check(int i,int jinzhi){
    vector<int>ji;
    while(i){
          ji.push_back(i%jinzhi);
          i/=jinzhi;
    }
    int c=0;//进制转换
    for(int i=0;i<ji.size();i++) c+=ji[i];//统计数位和
    return c;
}
signed main(){
    for(int i=1;i<=2024;i++) cnt+=(check(i,2)==check(i,4));//循环
    cout<<cnt;//输出
    return 0;
}

这题不难,建议评红或橙。