当前位置:编程学习 > JAVA >>

poj 1220 java大数类

[java]
import java.math.BigDecimal; 
import java.math.BigInteger; 
import java.util.Scanner; 
 
public class Main { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Scanner input = new Scanner(System.in); 
        int icase; 
        int b1; 
        int b2; 
        String str; 
        char ch; 
        int top = 0; 
        int c; 
        char chh; 
        int tmp; 
        BigInteger sum,a; 
        BigInteger t; 
        int[] stack = new int[2000]; 
        // 余数入栈 
        icase = input.nextInt(); 
        while ((icase--) != 0) { 
             a = BigInteger.valueOf(1); 
             sum = new BigInteger("0"); 
            b1 = input.nextInt(); 
            b2 = input.nextInt(); 
            str = input.next(); 
            for (int i = str.length()-1; i >= 0 ; i--) {   //先化成10进制 
                tmp = 0; 
                ch = str.charAt(i); 
                if (ch <= '9' && ch >= '0') { 
                    tmp = ch - '0'; 
                } else if (ch >= 'A' && ch <= 'Z') { 
                    tmp = ch - 'A' + 10; 
                } else if (ch >= 'a' && ch <= 'z') { 
                    tmp = ch - 'a' + 36; 
                } 
                sum = sum.add(BigInteger.valueOf(tmp).multiply(a)); 
                a = a.multiply(BigInteger.valueOf(b1)); 
            } 
            System.out.print(b1 + " " + str + "\n" + b2 + " "); 
              BigInteger zero = BigInteger.valueOf(0);  
              //sum != BigInteger.valueOf(0)这样不对  java不能这样比较两个对象是否相等吧 
              //神马都是类。。。。。。。。。。。。受不了,不习惯 
            while (sum.compareTo(zero) != 0) { 
                t = sum.mod(BigInteger.valueOf(b2)); 
                stack[++top] = t.intValue(); 
                sum = sum.divide(BigInteger.valueOf(b2)); 
            } 
            if(top == 0) 
                System.out.print(0); 
            while (top != 0) { 
                c = stack[top--]; 
                if (c < 10) 
                    chh = (char) (c + '0'); 
                else if (c < 36) 
                    chh = (char) (c - 10 + 'A'); 
                else 
                    chh = (char) (c - 36 + 'a'); 
                System.out.print(chh); 
            } 
            System.out.print("\n\n"); 
        } 
    } 
 

 

 

作者 Bill_Ming

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,