题目描述
3020年,空间通信集团的员工人数数量突破20亿,现有工号系统不够用的窘境。
现在,请你负责调研新工号系统。继承历史传统,新工号系统由小写英文字母(a-z)和数字(0-9)两部分构成。
新工号分一段英文字符开头,之后跟着一段数字,例如"aaaahw0001",“a12345”,“abcd1”,“a00”。
注意新工号数字不能全字母或者数字,允许数字部分有前导0或者全为0。
但是过长的工号会增加同事们的记忆成本,现给出新工号至少需要分配的人数 X X X 和新工号中字母的长度 Y Y Y,求新工号中数字的最短长度 Z Z Z。
输入描述
一行两个非负整数 X X X 和 Y Y Y,代表字母单个字母空间总数。
0 < = X < = 2 5 0 − 1 0 <= X <= 2^50 - 1 0<=X<=250−1
0 < Y < = 5 0 < Y <= 5 0<Y<=5
输出描述
输出新工号中数字部分的最短长度。
示例1
输入:
260 1
输出:
1
示例2
输入:
26 1
输出:
1
说明:
数字长度不能为0
题解
字母为26 进制 , 数字为10进制,数字至少一位
不超过 2 6 Y ∗ 10 26^Y * 10 26Y∗10 的数结果都是 1 其他依次*10 直到超过
源码Java
public class StaffNo {
static Input input;
static {
input = new Input("2600 1");
}
public static void main(String[] args) {
String[] split = input.nextLine().split(" ");
int count = Integer.parseInt(split[0]);
int Y = Integer.parseInt(split[1]);
int a = 1;
int baseA = 26;
int baseB = 10;
for (int i = 0; i < Y; i++) {
a *= baseA;
}
a *= baseB;
if (a >= count) {
System.out.println(1);
return;
}
int result = 1;
while (a < count) {
a *= 10;
result++;
}
System.out.println(result);
}
}