【题目来源】
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/