题解:P10999 [蓝桥杯 2024 省 Python B] 穿越时空之门
题目大意
要计算
题目思路
准备
先统计二进制各数位之和:
while(k){
sum1+=k%2;
k/=2;
}
再统计四进制各数位之和:
while(k){
sum2+=k%4;
k/=4;
}
最后再判断,如果相等计数器加一。
#include<bits/stdc++.h>
using namespace std;
int main(){
int cnt=0;//计数器
for(int i=1;i<=2024;i++){
int k=i,sum1=0,sum2=0;//这里不能改变i值,需要另一个变量
while(k){//二进制
sum1+=k%2;
k/=2;
}
k=i;
while(k){//四进制
sum2+=k%4;
k/=4;
}
if(sum1==sum2) cnt++;//判断
}
cout << cnt;
return 0;
}