【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"); } } }
相关文章推荐
- POJ 1220 大数字的进制转换,偷下懒,用java
- poj 1220 java大数处理进制转换
- 【Java练习1】POJ 1131
- POJ 1220 高精度进制转换
- POJ 2305 Basic remains(JAVA练习)
- 【Java练习12】POJ 1894
- POJ 1220 任意进制转换
- Java中的进制转换,练习
- 【Java练习3】POJ 1405
- POJ 1220 (两种任意进制之间的转换(大数),java的BigInteger)
- POJ2305 Basic remains 大数|进制转换 Java
- 【Java练习4】POJ 1503
- 【Java练习7——Catalan数】POJ 2084
- 进制转换 poj1220-NUMBER BASE CONVERSION
- 【Java 进制转换】POJ - 2305 Basic remains
- POJ 1220 NUMBER BASE CONVERSION(高精度--进制转换)
- 高精度进制转换 poj 1220 NUMBER BASE CONVERSION
- POJ 1220 大数任意进制转换
- POJ 1220 NUMBER BASE CONVERSION(高精度进制转换)
- poj 1131 Octal Fractions(高精度小数进制转换) Java