第三题,考虑负数,考虑首0 import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Map<Character, Integer> toNum = new HashMap<>();
Map<Integer, Character> toChar = new HashMap<>();
for (int i = 0; i < 10; ++i) {
char c = (char) ('0' + i);
toNum.put(c, i);
toChar.put(i, c);
}
for (int i = 0; i < 26; ++i) {
char c = (char) ('a' + i);
toNum.put(c, i + 10);
toChar.put(i + 10, c);
}
for (int i = 0; i < 26; ++i) {
char c = (char) ('A' + i);
toNum.put(c, i + 36);
toChar.put(i + 36, c);
}
while (cin.hasNextInt()) {
int src = cin.nextInt(), dst = cin.nextInt();
char[] s = cin.next().toCharArray();
if (s.length == 1 && s[0] == '0') {
System.out.println("0");
continue;
}
boolean neg = false;
if (s[0] == '-') {
neg = true;
}
int sum = 0, i = 0;
if (neg) {
i = 1;
}
for (; i < s.length; ++i) {
sum *= src;
sum += toNum.get(s[i]);
}
LinkedList<Character> stack = new LinkedList<>();
while (sum > 0) {
int t = sum % dst;
sum /= dst;
char c = toChar.get(t);
stack.addLast(c);
}
if (neg) {
System.out.print("-");
}
while (!stack.isEmpty() && stack.getLast() == '0') {
stack.removeLast();
}
while (!stack.isEmpty()) {
System.out.print(stack.removeLast());
}
System.out.println();
}
}
}