哈沙德数幸运数字------蓝桥杯

问题描述:

哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如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+)=0。小蓝认为,如果个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第1至第10个幸运数字的+进制表示为:1,2,4,6,8,40,48,72,120,126 ....。现在他想知道第2023 个幸运数字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

代码实现:

java 复制代码
public class Main {
	public static void main(String[] args) {
		int i = 1, counter = 0;
		while(true) {
			String bin = Integer.toBinaryString(i);
			String oct = Integer.toOctalString(i);
			String dec = String.valueOf(i);
			String hex = Integer.toHexString(i);
			
			int binSum = sum(bin, 2);
			int octSum = sum(oct, 8);
			int decSum = sum(dec, 10);
			int hexSum = sum(hex, 16);
			
			if(i % binSum == 0 && i % octSum == 0 && i % decSum == 0 && i % hexSum == 0) {
				counter++;
			}
			if(counter >= 2023) {
				System.out.println(i);
				break;
			}
			i++;
		}
		
		
	}
	private static int sum(String numStr, int radix) {
		BigInteger ret = new BigInteger("0", radix);
		
		for(int i1 = 0; i1 < numStr.length(); i1++) {
			String s = numStr.substring(i1, i1+1);
			BigInteger bn = new BigInteger(s, radix);
			ret = ret.add(bn);
		}
		return ret.intValue();
		
	}
}
相关推荐
CoovallyAIHub1 分钟前
ICLR 2026 | VLM自己学会调检测器:VTool-R1用强化学习教视觉模型使用工具推理
算法·架构·github
CoovallyAIHub6 分钟前
RK3588上111 FPS:轻量YOLOv8+异步视频处理系统实现无人机自主电力巡检
算法·架构·github
Nyarlathotep011318 分钟前
自动内存管理(2):垃圾收集器与内存分配策略
java·jvm·后端
却话巴山夜雨时i20 分钟前
互联网大厂Java面试实录:技术栈解析与场景剖析
java·大数据·spring boot·spring cloud·微服务·ai·面试
好家伙VCC22 分钟前
# 发散创新:基于事件驱动架构的实时日志监控系统设计与实现在现代分布式系统中,**事件驱动编程模型**正
java·python·架构
SuniaWang24 分钟前
Java 17实战:Record与密封类的黄金搭档
java·开发语言·python
炽烈小老头29 分钟前
【每天学习一点算法 2026/04/13】两数相除
学习·算法
小江的记录本34 分钟前
【Transformer架构】Transformer架构核心知识体系(包括自注意力机制、多头注意力、Encoder-Decoder结构)
java·人工智能·后端·python·深度学习·架构·transformer
小松加哲40 分钟前
深入剖析Tomcat原理
java·tomcat
嘻嘻哈哈樱桃40 分钟前
俄罗斯套娃信封问题力扣--354
算法·leetcode·职场和发展