第三题,考虑负数,考虑首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();
		}
	}
}