最新华为OD机试
真题目录:点击查看目录
华为OD面试真题精选:点击立即查看
题目描述
3020年,空间通信集团的员工人数突破20亿人,即将遇到现有工号不够用的窘境。
现在,请你负责调研新工号系统。继承历史传统,新的工号系统由小写英文字母(a-z)和数字(0-9)两部分构成。
新工号由一段英文字母开头,之后跟随一段数字,比如”aaahw0001″,”a12345″,”abcd1″,”a00″。
注意新工号不能全为字母或者数字,允许数字部分有前导0或者全为0。
但是过长的工号会增加同事们的记忆成本,现在给出新工号至少需要分配的人数X和新工号中字母的长度Y,求新工号中数字的最短长度Z。
输入描述
一行两个非负整数 X Y,用数字用单个空格分隔。
0< X <=2^50 – 1
0< Y <=5
输出描述
输出新工号中数字的最短长度Z
示例1
输入
260 1
输出
1
说明
无
示例2
输入
26 1
输出
1
说明
数字长度不能为0
示例3
输入
2600 1
输出
2
说明
解题思路
这是一个数学问题,我们需要找到一个最小的数字长度Z,使得26的Y次方乘以10的Z次方大于等于X。这是因为26个小写字母可以组成26的Y次方种可能,10个数字可以组成10的Z次方种可能,所以总共可以组成26的Y次方乘以10的Z次方种工号。我们需要找到最小的Z使得这个数大于等于X。
下面我来分解为几个关键点来解释。
题目分析
1. 工号的构成:
工号由两部分构成:
- 一段英文字母(小写字母 a-z)
- 一段数字(数字0-9)
新工号必须以字母开头,然后是数字部分。数字部分可以有前导0或全为0。
2. 工号生成规则:
假设字母部分长度为 Y
,那么字母部分可以生成的不同组合数为 2 6 Y 26^Y 26