华为OD机试 2023B卷题库疯狂收录中,刷题点这里
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
3020年,空间通信集团的员工人数突破20亿人,即将遇到现有工号不够用的窘境。
现在,请你负责调研新工号系统。
继承历史传统,新的工号系统由小写英文字母(a-z)和数字(0-9)两部分构成。新工号由一段英文字母开头,之后跟随一段数字。
比如”aaahw0001"、”a12345"、“abcd1”、”a00"。
注意新工号不能全为字母或者数字,允许数字部分有前导0或者全为0。
但是过长的工号会增加同事们的记忆成本,现在给出新工号至少需要分配的人数X和新工号中字母的长度Y,求新工号中数字的最短长度Z。
一行两个非负整数XY,用数字用单个空格分隔
0
0 输出新工号中数字的最短长度Z。 小写字母有26种,数字有10种,因此如果工号组合选择一个字母,一个数字的话,则有26*10=260种。 如果选择两个字母,两个数字的话,则会产生262*102种工号。 现在确定了需要的工号总个数x,以及字母个数y,也就是说X=26y*10z。 求最小的z,且z>=1。 因此z的求解公式: z=log(x/26y) 这里我们要保证z向上取整,且保证z最小取1。 260 1 1 下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分) 本文收录于,华为OD机试(JAVA)真题(A卷+B卷) 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。三、输出描述
四、解题思路
五、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long X = sc.nextLong();
int Y = sc.nextInt();
System.out.println((long) Math.max(1, Math.ceil(Math.log10(X / Math.pow(26, Y)))));
}
}
六、效果展示
1、输入
2、输出
3、说明