您的位置:首页 > 编程语言 > Java开发

【Java练习2——进制转换】POJ 1220

2011-09-22 00:39 585 查看
java自带的进制转换限制了范围n<=35,这题是2<=n<=62,不能满足要求,所以要以10进制为桥梁转化,注意0的情况!

import java.io.*;
import java.math.*;
import java.util.*;

public class Main{
public static void main(String[] args){
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int t;int s = 0;
t = cin.nextInt();
while((t--)!=0){
BigInteger b1,b2;
b1 = cin.nextBigInteger();
b2 = cin.nextBigInteger();
String str = cin.next();
int i,j;
BigInteger sum = BigInteger.valueOf(0);
BigInteger tmp = BigInteger.valueOf(1);

for(i=str.length()-1;i>=0;i--){
char c = str.charAt(i);
if(c>='0' && c<='9')s = c-'0';
if(c>='A' && c<='Z')s = c-'A'+10;
if(c>='a' && c<='z')s = c-'a'+10+('Z'-'A'+1);
sum = sum.add(BigInteger.valueOf(s).multiply(tmp));
tmp = tmp.multiply(b1);
}
//System.out.println(sum);
int cnt=0;
int ans[] = new int[1000];
while(sum.compareTo(BigInteger.valueOf(0))!=0){
cnt++;
ans[cnt] = sum.mod(b2).intValue();
sum = sum.divide(b2);
}
System.out.print(b1+" "+str+"\n"+b2+" ");
if(cnt==0)System.out.print(0);
while(cnt!=0){
int w = ans[cnt--];
char c;
if(w<10)c = (char)(w +'0');
else
if(w<36)c = (char)(w-10+'A');
else
c= (char)(w-36+'a');
System.out.print(c);
}
System.out.printf("\n\n");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: