【蓝桥杯】试题 B: 幸运数字本题总分:5 分【问题描述】哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整 数。例如 126 是十进制下的一个哈沙德数,因为 (126)10 mod (

本文介绍了一个编程题目,涉及寻找在二进制、八进制、十进制和十六进制下都是哈沙德数的“幸运数字”,通过is方法和while循环计算得到第2023个幸运数字为215040。
摘要由CSDN通过智能技术生成

试题 B: 幸运数字

本题总分:5 分

【问题描述】
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整 数。例如 126 是十进制下的一个哈沙德数,因为 (126)10 mod (1+2+6) = 0;126也是八进制下的哈沙德数,因为 (126)10 = (176)8,(126)10 mod (1 + 7 + 6) = 0; 同时 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 个幸运数 字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

代码如下:

public class Main {

	public static void main(String[] args) {
	   int count=0;//计数
	   int val=1;
	   while(count<2023) {
		   if(is(10,val)&&is(8,val)&&is(16,val)&&is(2,val)) {
			   count++;
		   }
		   if(count==2023) {
			   System.out.println(val);
		   }
		   val++;
	   }
	}
	public static boolean is(int n,int val){
		int m=val,ans=0;
		while(m>0) {
			ans+=m%n;
			m/=n;
		}
		return val%ans==0;
	}
}

答案:215040

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值