目录
进制转换:
思路
代码
题目链接:
0幸运数字 - 蓝桥云课 (lanqiao.cn)
本题就考的进制转换问题,要将十进制5转换成二进制,通过
%2
,和/2
的交替使用即可完成,所得余数就是转换成的二进制各位的值,转换成其他进制也是类似。2023年第十四届蓝桥杯JavaB组省赛真题及解析_蓝桥杯javab组真题解析-CSDN博客
进制转换:
本题不会的原因主要是进制转换不熟练。
可以看这篇:进制转换(二进制、八进制、十进制、十六进制)涵盖整数与小数部分,超详细_243h转8q等于几-CSDN博客
这道题用到的总结一下就是:
整数转换:
1、十进制转二进制------除2取余倒序输出
2.十进制转八进制------除8取余倒序输出
3.十进制转十六进制------除16取余倒序输出
思路
写一个函数,判断某个数是否满足题目的沙哈德数的要求。
可以是bool函数,是的话返回1,否则返回0。
可以有两个参数,主函数传入,分别是 哪个数n 和 几进制m
代码
#include<bits/stdc++.h>
using namespace std;
bool judge(int n,int m){
int sum=0;
int j=n; //得把n记录一下,要不然等会n就不是原来的n了
while(n>0){ //不能n/m!=0,因为n/m=0,只有在n=0时才成立,这样的话得前一个n就等于0 ,不对了
sum+=n%m;
n=n/m;
}
if(j%sum==0){
return true;
}
else return false;
}
int main(){
int arr=0;
for(int i=1;i>0;i++){
if(judge(i,2) && judge(i,8) && judge(i,10) && judge(i,16)){
arr++;
if(arr==2023){
cout<<i<<endl;
break;
}
}
}
return 0;
}