蓝桥杯练习题-幸运数字

问题描述:

哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如126是十进制下的一个哈沙德数,因为

(126)1o mod (1+2+6)=0; 126也是八进制下的哈沙德数,因为(126)10 = (176)s , (126)10 mod (1+7+6)=0;同时126也是16进制下的哈沙德数,因为(126)10 = (7e)16,(126)1o mod (7+e)=0。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第1至第10个幸运数字的十进制表示为:

1,2,4,6,8,40,48,72,120,126.. .。现在他想知道第2023个幸运数字是多少?你只需要告诉小蓝这个整数的十进制表示即可。

实现思路:

1.初始化变量:

设置 i 初始化为1,counter 用于跟踪找到的幸运数字的数量。
2.死限循环:

while(true) 表示这是一个死限循环,直到满足某个条件(即找到第2023个幸运数字)时才会退出。
3.检查数字是否是幸运数字:

对于当前的数字 i,首先将其转换为二进制、八进制、十进制和十六进制表示形式。

然后计算每种表示形式的数字之和。

如果 i 能被这些和整除,则counter ++

退出条件:

如果 counter 的值达到2023,那么输出当前的 i 值并退出循环。
4.递增当前数字:

i++ 使得下一个要检查的数字是 i+1。
5.计算字符串数字之和的函数:

sum(String numStr, int radix) 函数接受一个数字字符串和其基数(例如二进制、八进制等),然后返回该数字的字符串表示形式的所有数字之和。例如,对于二进制数 "101",其和为2。这个函数通过使用 BigInteger 类来实现,它可以处理任意大小的整数。

java 复制代码
package com.ztt.Demo01;
import java.util.Scanner;
import java.math.BigInteger;

public class demo04 {
    public static void main(String[] args) {
      
        //在此输入您的代码...
        int i=1;//十进制整数,设定开始数值
        int counter=0;
        
		while(true) {
			//检查当前数字i是否是幸运数字
			//步骤1:将当前数字i分别转换成2进制、8进制、10进制、16进制(字符串)
			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 total=new BigInteger("0",radix);
		
		for (int i = 0; i < numStr.length(); i++) { 
			String s=numStr.substring(i, i + 1);
			BigInteger bn = new BigInteger(s,radix);
				//total+=bn
				total = total.add(bn);
		}
		return total.intValue();
      
    }
    
}

运行结果:

java 复制代码
215040
相关推荐
逻辑驱动的ken2 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
Chase_______8 小时前
LeetCode 2461 & 1423:定长滑窗变体精讲,从 HashMap 判重到正难则反的转化技巧
算法·leetcode·职场和发展
H_BB8 小时前
第17届蓝桥杯备战历程
c++·算法·职场和发展·蓝桥杯
WL_Aurora9 小时前
备战蓝桥杯国赛【Day 5】
python·蓝桥杯
大侠区块链9 小时前
我面试了上百个想进 AI 公司的人,发现他们都搞错了一件事--深度精读 | 对话 Anthropic Claude Code 产品负责人 Cat Wu
人工智能·面试·职场和发展
米粒110 小时前
力扣算法刷题 Day 62 最短路算法
算法·leetcode·职场和发展
programhelp_11 小时前
Meta SDE 面经分享|VO 四轮高强度输出,系统设计追问非常深
经验分享·面试·职场和发展
生物信息与育种11 小时前
实战总结:用 rMVP 做植物 GWAS 的标准工作流与避坑指南
人工智能·深度学习·职场和发展·数据分析·r语言
嵌入式小企鹅11 小时前
大模型算法工程师面试宝典
人工智能·学习·算法·面试·职场和发展·大模型·面经
冻感糕人~12 小时前
大模型面试干货:小白程序员如何准备,轻松拿下高薪Offer?收藏这份独家秘籍!
java·人工智能·学习·ai·面试·职场和发展·大模型学习