PKU 1220 NUMBER BASE CONVERSION

http://poj.org/problem?id=1220
多倍長の基数変換。

javaに逃げました。
でもtoString(int radix)がそこまで使えるものじゃなくて、あまり楽じゃない感じでした。
でも多倍長の割り算をC++とかで実装するよりはましだと思いました。

import java.util.*;
import java.math.*;
   
public class Main{
    public static void main(String[] args){
        (new Main()).run();
    }
    public int ctoi(char in){
        if(in<='9')return in-'0';
        if(in<='Z')return in-'A'+10;
        return in-'a'+36;
    }

    public char itoc(int in){
        if(in<10)return (char)(in+'0');
        if(in<36)return (char)(in-10+'A');
        return (char)(in-36+'a');
    }

    public void run(){
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();

        for(int i=0;i<n;++i){
            BigInteger a=cin.nextBigInteger();
            BigInteger b=cin.nextBigInteger();
            String in=cin.next();
            System.out.println(a+" "+in);
            BigInteger inb=new BigInteger("0");
            for(int j=0;j<in.length();++j){
                inb=inb.multiply(a).add(new BigInteger(String.valueOf(ctoi(in.charAt(j)))));
            }
            String out=new String();
            if(inb.equals(BigInteger.ZERO))out="0";
            else{
                while(inb.compareTo(BigInteger.ZERO)>0){
                    out=itoc(inb.mod(b).intValue())+out;
                    inb=inb.divide(b);
                }
            }
            System.out.println(b+" "+out+"\n");
        }
    }
}