lanqiaoOJ 19701:穿越时空之门 ← 函数+进制转换

【题目来源】
https://www.lanqiao.cn/problems/19701/learning/

【题目描述】
随着 2024 年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。
在二进制的领域里,勇者的力量被转换成了力量数值的二进制表示中各数位之和。
在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。
穿越这扇时空之门的条件是严苛的:当且仅当勇者在二进制领域的力量等同于四进制领域的力量时,他才能够成功地穿越。
国王选定了小蓝作为领路人,带领着力量值从 1 到
2024 的勇者们踏上了这段探索未知的旅程。作为小蓝的助手,你的任务是帮助小蓝计算出,在这 2024 位勇者中,有多少人符合穿越时空之门的条件。

【答案提交】
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

【算法分析】
很水的一道题。考查的是进制转换。
但需要注意的是共有 2024 位勇者,不要看成 1024 位勇者。

【算法代码】

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

int two(int x) {
    int sum=0;
    while(x) {
        sum+=x%2;
        x/=2;
    }
    return sum;
}

int four(int x) {
    int sum=0;
    while(x) {
        sum+=x%4;
        x/=4;
    }
    return sum;
}

int main() {
    int cnt=0;
    for(int i=1; i<=2024; i++) {
        if(two(i)==four(i)) cnt++;
    }
    cout<<cnt<<endl;

    return 0;
}

/*
out:
63
*/





【参考文献】
https://www.lanqiao.cn/problems/19701/learning/


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值