雖然說我不怎么會用java寫一些東西,但是java里的biginteger我還是很喜歡的。這個類解決了,我們在其他很多語言中遇到的問題:大數。比如在C++中我們要計算一個大小超過long long的數就必須采取很多的代碼來解決。簡單一點的課余采取用幾個數來存數,復雜的我們就要用到字符串的處理通過,通過字符串我們能夠處理任意大的數(理論上,實際由於內存之類的原因還是不行的)。
但是使用字符串的形式實現的方式是十分復雜的。我們就最簡單的加法為例說明一下,並展望一下乘法甚至是除法的處理方式。字符串處理大數的本質就是“手工計算”,這里的手工當然不是讓你離開電腦去自己算,而是說讓電腦按照我們手算的方式進行計算,只是用字符串儲存一切結果。比如加法我們使用的方法就是字符串中的每個字符一位一位加,並且自己實現進位功能。下面給一個例子:
如果說加法的復雜程度還可以接受那你還而已考慮一下乘法。。。
好了廢話不多說,介紹一下主角:
BIgInteger是java中math包里面的一個類,它可以提供各種各樣的大數操作,具體的參考api文檔自然是最好的,我這里就只給出一個例子,里面調用的是轉換函數,可以簡單完成字符串到大數的轉換。(個人覺的算是復雜一點的應用了)
1 /* 2 * To change this template, choose Tools | Templates 3 * and open the template in the editor. 4 */ 5 6 package bigfor2013; 7 import java.math.*; 8 import java.util.*; 9 import java.io.*; 10 /** 11 * 12 * @author lenovo 13 */ 14 public class Bigfor2013 { 15 16 /** 17 * @param args the command line arguments 18 */ 19 public static void main(String[] args) { 20 // TODO code application logic here 21 Scanner cin=new Scanner(new BufferedInputStream(System.in)); 22 BigInteger a,b; 23 a=cin.nextBigInteger(); 24 int from ,to; 25 from =cin.nextInt(); 26 to=cin.nextInt(); 27 String s; 28 s=cin.next(); 29 BigInteger c=new BigInteger(s,from); 30 System.out.println(c.toString(to)); 31 } 32 }