题目1080:进制转换

来源:互联网 发布:肖像权网络侵权管辖 编辑:程序博客网 时间:2024/06/05 10:01
import java.util.Scanner;import java.io.IOException;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.FileReader;import java.math.BigInteger;class Main {private final static boolean DEBUG = false;public static void main(String[] args) throws IOException {Scanner cin;int n, m;String s;if (DEBUG) {cin = new Scanner(new BufferedReader(new FileReader("d:\\OJ\\uva_in.txt")));} else {cin = new Scanner(new BufferedReader(new InputStreamReader(System.in)));}while (cin.hasNext()) {n = cin.nextInt();m = cin.nextInt();s = cin.next();if (s.compareTo("0") == 0) {System.out.println(s);continue;}BigInteger a = BigInteger.ZERO;for (int i = 0; i < s.length(); i++) {if (Character.isLetter(s.charAt(i))) {a = a.multiply(BigInteger.valueOf(n)).add(BigInteger.valueOf(s.charAt(i) - 'A' + 10));} else {a = a.multiply(BigInteger.valueOf(n)).add(BigInteger.valueOf(s.charAt(i) - '0'));}}StringBuffer ans = new StringBuffer();BigInteger rem;while (a.compareTo(BigInteger.ZERO) != 0) {rem = a.remainder(BigInteger.valueOf(m));int tmp = Integer.parseInt(rem.toString());if (tmp < 10) {ans.append((char) ('0' + tmp));} else {ans.append((char) ('a' + tmp - 10));}a = a.divide(BigInteger.valueOf(m));}s = ans.reverse().toString();System.out.println(s);}}}

0 0