POJ 1220 (两种任意进制之间的转换(大数),java的BigInteger)
2013-10-20 11:12
513 查看
http://poj.org/problem?id=1220
N进制 向 M进制 转换,
1. 先将N进制 转换成10进制;
2.将结果逐次对M取余;
一开始用BigDecimal,没办法取余;参考大神的,用BigInteger
N进制 向 M进制 转换,
1. 先将N进制 转换成10进制;
2.将结果逐次对M取余;
一开始用BigDecimal,没办法取余;参考大神的,用BigInteger
package com.zyh.hdu; import java.math.BigInteger; import java.util.Scanner; public class Poj1220 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int t = cin.nextInt(); while(t-- != 0){ int a = cin.nextInt(); int b = cin.nextInt(); String aa = cin.next(); System.out.println(a+" "+aa); System.out.print(b+" "); BigInteger sum = BigInteger.ZERO; for(int i=0; i<aa.length();i++){ sum = sum.multiply(BigInteger.valueOf(a)).add(BigInteger.valueOf(getnum(aa.charAt(i)))); } //System.out.println(sum); String bb = ""; while(!sum.equals(BigInteger.ZERO)){ bb = retchar(sum.mod(BigInteger.valueOf(b)).intValue()) + bb; sum = sum.divide(BigInteger.valueOf(b)); } if(bb.equals("")) bb="0"; System.out.println(bb); System.out.println(); } } static int getnum(char m){ if(m>='0' && m<='9') return m - '0'; else if(m>='A' && m<='Z') return m-'A'+10; else return m-'a'+36; } static char retchar(int i){ if(i<=9) return (char) (i + '0'); else if(i>=10 && i<=35) return (char)(i -10+'A'); else return (char)(i-36+'a'); } } /* * * * Sample Input 8 62 2 abcdefghiz 10 16 1234567890123456789012345678901234567890 16 35 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2 35 23 333YMHOUE8JPLT7OX6K9FYCQ8A 23 49 946B9AA02MI37E3D3MMJ4G7BL2F05 49 61 1VbDkSIMJL3JjRgAdlUfcaWj 61 5 dl9MDSWqwHjDnToKcsWE1S 5 10 42104444441001414401221302402201233340311104212022133030 Sample Output 62 abcdefghiz 2 11011100000100010111110010010110011111001001100011010010001 10 1234567890123456789012345678901234567890 16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2 16 3A0C92075C0DBF3B8ACBC5F96CE3F0AD2 35 333YMHOUE8JPLT7OX6K9FYCQ8A 35 333YMHOUE8JPLT7OX6K9FYCQ8A 23 946B9AA02MI37E3D3MMJ4G7BL2F05 23 946B9AA02MI37E3D3MMJ4G7BL2F05 49 1VbDkSIMJL3JjRgAdlUfcaWj 49 1VbDkSIMJL3JjRgAdlUfcaWj 61 dl9MDSWqwHjDnToKcsWE1S 61 dl9MDSWqwHjDnToKcsWE1S 5 42104444441001414401221302402201233340311104212022133030 5 42104444441001414401221302402201233340311104212022133030 10 1234567890123456789012345678901234567890 */
相关文章推荐
- POJ 1131 Octal Fractions 任意进制之间小数的转换
- Java中两个大数之间的相关运算及BigInteger代码示例
- 大数的任意进制之间的转换(九度OJ题目1080)
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
- 还是进制之间的转换,这次全部是自己写的没有用Java的Integer
- POJ PKU 2305 java大数进制转化 JAVA 大数转换成字符串 转
- POJ 1220-NUMBER BASE CONVERSION 任意进制数转换
- Java中各进制数之间的转换[转自http://blog.chinaunix.net/u2/62809/showart_515317.html]
- java中String,Integer,int之间转换
- java中各进制之间的转换
- Java生成随机数工具类,进制之间的转换工具类,获取指定时间,时间格式转换工具类
- JAVA大数处理(BigInteger,BigDecimal)
- Java 中long(Long)与int(Integer)之间的转换
- JAVA大数处理(BigInteger,BigDecimal)
- 不同进制大数之间的相互转换
- 面试的时候要求写个程序:任意进制数(2-16之间的进制)转换
- Python 10进制与任意进制之间相互转换(最大为62进制)
- Java IP地址字符串与BigInteger的转换, 支持IPv6
- Java生成随机数工具类,进制之间的转换工具类,获取指定时间,时间格式转换工具类