基本開頭
import java.math.*;
import java.util.*;
public class Main {
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);//創建輸入
BigInteger a=cin.NextBigInteger();//輸入
}
}
EOF:用法
普通的數:while(cin.hasNextInt())
//等同於!=EOF,第一數一定要輸入整形的
大數的一般是:while(cin.hasNextBigInteger())
//第一個數一定要輸入大數
System.out.print(m.toString()); //輸出
//m.toString() 將m轉爲String 類
大數用法(整數)
定義
BigInteger []a=new BigInteger[100]; //數組
BigInteger a=new BigInteger("1"); //賦值
a= new BigInteger(""+b); //b是int類型的
運算
//d爲int型,a,b,c都爲大數
c=a.add(b); // 相加
c=a.subtract(b); // 相減
c=a.multiply(b); // 相乘
c=a.divide(b); // 相除取整
c=a.gcd(b); // 最大公約數
c=a.remainder(b); // 取餘
c=a.mod(b); // a mod b
c=a.abs(); // a的絕對值
c=a.negate(); //a的相反數
c=a.pow(d); // a的b次冪 d爲int型
c=a.max(b); // 取a,b中較大的
c=a.min(b); // 取a,b中較小的
d=a.compareTo(b); // 比較a與b的大小d=-1小於,d=0等於,d=1大於,d爲int型
a.equals(b); // 判斷a與b是否相等 相等返回true 不相等返回false
轉換
d=a.intValue(); // 將大數a轉換爲 int 類型賦值給 d
e=a.longValue(); // 將大數a轉換爲 long 類型賦值給 e
f=a.floatValue(); // 將大數a轉換爲 float 類型賦值給 f
g=a.doubleValue(); // 將大數a轉換爲 double 類型賦值給 g
s=a.toString(); // 將大數a轉換爲 String 類型賦值給 s
s=a.toPlainString(); //將大數a轉換爲String類型賦值給s,且不表示爲科學計數法
a=BigInteger.valueOf(e); // 將 e 以大數形式賦值給大數 a (e只能爲long或int )
a=newBigInteger(s,d); // 將s數字字符串以d進制賦值給大數a如果d=s字符數字的進制則等同於將數字字符串以大數形式賦值給大數a
進制
String st = Integer.toString(num, base);
//把int型num當10進制的數轉成base進制數存入st中 (base <= 35).
int num = Integer.parseInt(st, base);
//把st當做base進制,轉成10進制的int
(parseInt有兩個參數,第一個爲要轉的字符串,第二個爲說明是什麼進制).
BigInteger m = new BigInteger(st, base); // st是字符串,base是st的進制.
BigInteger a;
int b;
String c;
a=cin.nextBigInteger(b); //以b進制讀入一個大數賦值給a
c=a.toString(b); // 將大數a以b進制的方式賦給字符串c
a=newBigInteger(c,b); //把c 當做“b進制“轉爲十進制大數賦值給a
PS.
每次使用String進行單個字符操作時
需要先
String s;
char[] c=s.toCharArray();
大數用法(浮點數)
定義
String a = "1";
String b = "4.56";
BigDecimal aBD = new BigDecimal(a);
BigDecimal bBD = new BigDecimal(b);
BigDecimal resultBD = aBD.divide(bBD).setScale(3, java.math.BigDecimal.ROUND_HALF_UP);
//3是保留小數,ROUND_HALF_UP是四捨五入
//優先使用String而不是Double構造BigDecimal
//加減乘除參照大整數運算
除法時的舍入控制
ROUND_CEILING //向正無窮方向舍入
ROUND_DOWN //向零方向舍入
ROUND_FLOOR //向負無窮方向舍入
ROUND_HALF_DOWN //向(距離)最近的一邊舍入,除非兩邊(的距離)是相等,如果是這樣,向下舍入, 例如1.55 保留一位小數結果爲1.5
ROUND_HALF_EVEN //向(距離)最近的一邊舍入,除非兩邊(的距離)是相等,如果是這樣,如果保留位數是奇數,使用ROUND_HALF_UP,如果是偶數,使用ROUND_HALF_DOWN
ROUND_HALF_UP //向(距離)最近的一邊舍入,除非兩邊(的距離)是相等,如果是這樣,向上舍入, 1.55保留一位小數結果爲1.6
ROUND_UNNECESSARY //計算結果是精確的,不需要舍入模式
ROUND_UP //向遠離0的方向舍入