POJ 1220 (两种任意进制之间的转换(大数),java的BigInteger)

来源:互联网 发布:机柜网络模块接线图 编辑:程序博客网 时间:2024/05/01 08:29

http://poj.org/problem?id=1220


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 Input862 2 abcdefghiz10 16 123456789012345678901234567890123456789016 35 3A0C92075C0DBF3B8ACBC5F96CE3F0AD235 23 333YMHOUE8JPLT7OX6K9FYCQ8A23 49 946B9AA02MI37E3D3MMJ4G7BL2F0549 61 1VbDkSIMJL3JjRgAdlUfcaWj61 5 dl9MDSWqwHjDnToKcsWE1S5 10 42104444441001414401221302402201233340311104212022133030Sample Output62 abcdefghiz2 1101110000010001011111001001011001111100100110001101001000110 123456789012345678901234567890123456789016 3A0C92075C0DBF3B8ACBC5F96CE3F0AD216 3A0C92075C0DBF3B8ACBC5F96CE3F0AD235 333YMHOUE8JPLT7OX6K9FYCQ8A35 333YMHOUE8JPLT7OX6K9FYCQ8A23 946B9AA02MI37E3D3MMJ4G7BL2F0523 946B9AA02MI37E3D3MMJ4G7BL2F0549 1VbDkSIMJL3JjRgAdlUfcaWj49 1VbDkSIMJL3JjRgAdlUfcaWj61 dl9MDSWqwHjDnToKcsWE1S61 dl9MDSWqwHjDnToKcsWE1S5 421044444410014144012213024022012333403111042120221330305 4210444444100141440122130240220123334031110421202213303010 1234567890123456789012345678901234567890  */


原创粉丝点击