本文最后更新于 188 天前,其中的信息可能已经有所发展或是发生改变。
问题描述
随着 20242024 年的钟声回荡,传说中的时空之门再次敞开。这扇门是一条神秘的通道,它连接着二进制和四进制两个不同的数码领域,等待着勇者们的探索。
在二进制的领域里,勇者的力量被转换成了力量数值的二进制表示中各数位之和。
在四进制的领域里,力量的转换规则相似,变成了力量数值的四进制表示中各数位之和。
穿越这扇时空之门的条件是严苛的:当且仅当勇者在二进制领域的力量等同于四进制领域的力量时,他才能够成功地穿越。
国王选定了小蓝作为领路人,带领着力量值从 11 到 20242024 的勇者们踏上了这段探索未知的旅程。作为小蓝的助手,你的任务是帮助小蓝计算出,在这 20242024 位勇者中,有多少人符合穿越时空之门的条件。
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
语言 | 最大运行时间 | 最大运行内存 |
---|---|---|
C++ | 1s | 256M |
C | 1s | 256M |
Java | 3s | 512M |
Python3 | 10s | 512M |
答案解析
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int sums(int x){
int s4 = 0;
while(x){
s4 += x%4,x = x/4;
}
return s4;
}
int sume(int x){
int s2 = 0;
while(x){
s2 += x%2,x = x/2;
}
return s2;
}
int main(){
int n = 2024,t = 0;
for(int i = 1;i<=n;i++){
int e = sume(i);
int s = sums(i);
//cout<<e<<" "<<s<<endl;
if(e==s) t++;
}
cout<<t<<endl;
return 0;
}