Java解决幸运数字
01 题目
-
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整
除的正整数。
-
例如 126 是十进制下的一个哈沙德数,因为
(126)10 mod (1+ 2+ 6) = 0;
-
126 也是8进制下的哈沙德
数,因为(126)10 =(176)8,(126)10 mod (1+7 + 6)
-
同时 126 也是 16 进制下的哈沙德数,因为
(126)10 = (7e)16,(126)10 mod (7 + e) = 0。
-
-
小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第 1至第 10 个幸运数字的十进制表示为: 1,2,4,6,8,40,48,72,120,126...。
-
现在他想知道第 2023 个幸运数字是多少?
-
你只需要告诉小蓝这个
整数的十进制表示即可
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的
结果为一个整数,在提交答案时只填写这个整数,填写多余的内
容将无法得分
02 知识点
- 函数
- 循环
03 我的题解思路
java
public class luckNumber {
public static void main(String[] args) {
int i=1;//从1开始循环
int rs=0;//当前第rs个幸运数字
while (true) {//利用死循环,直到找到答案
if(checkMod(i, 2)&&checkMod(i, 8)&&checkMod(i, 10)&&checkMod(i, 16)) {
rs++;
}
if(rs==2023) {//到达目标输出
System.out.println(i);
break;
}
i++;
}
}
public static boolean checkMod(int n,int mod) {
int mods=0;//用于记录取模后的和
int rs=n;//记录初始值
while(n>0) {
mods+=n%mod;//取模
n/=mod;//取余
}
return rs%mods==0;//判断是否是幸运数字
}
}