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

来源:互联网 发布:永州金域名都二手房 编辑:程序博客网 时间:2024/05/01 21:20

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');elseif(w<36)c = (char)(w-10+'A');elsec= (char)(w-36+'a');System.out.print(c);}System.out.printf("\n\n");}}}


原创粉丝点击