java大法好,退C保平......開玩笑的;php
import java.math.*; // 包含大數類的包 import java.util.*; // 包含輸入頭的包
public class Main{ public static void main(String args[]){ Scanner cin = newScanner(System.in); // 輸入必備句 } }
//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 <span style="color:#ff0000;">s=a.toPlainString(); //將大數a轉換爲String類型賦值給s,且不表示爲科學計數法</span> 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有兩個參數,第一個爲要轉的字符串,第二個爲說明是什麼進制). BigInter m = new BigInteger(st, base); // st是字符串,base是st的進制. BigInteger a; int b; Stringc; a=cin.nextBigInteger(b); //以b進制讀入一個大數賦值給a c=a.toString(b); // 將大數a以b進制的方式賦給字符串c a=newBigInteger(c, b); //把c 當作「b進制「轉爲十進制大數賦值給a
例:hdu1250 http://acm.hdu.edu.cn/showproblem.php?pid=1250java
題目大意:斐波那契數列;ide
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); while(cin.hasNext()){ int n=cin.nextInt(); BigInteger ans[]=new BigInteger[10000]; //BigInteger tmp1=BigInteger.valueOf(1); //BigInteger tmp2=BigInteger.valueOf(1); ans[1]=ans[2]=ans[3]=ans[4]=BigInteger.ONE; for(int i=5;i<=n;i++) { ans[i]=ans[i-1].add(ans[i-2]).add(ans[i-3]).add(ans[i-4]); } System.out.println(ans[n]); } } }
例:hdu1753 http://acm.hdu.edu.cn/showproblem.php?pid=1753函數
題目大意:兩個大數浮點數相加;spa
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin =new Scanner(System.in); while(cin.hasNext()){ BigDecimal a,b; while(cin.hasNext()){ a=cin.nextBigDecimal(); b=cin.nextBigDecimal(); System.out.println(a.add(b).stripTrailingZeros().toPlainString()); } } } }
PS: 有用java水了一道,這裏注意下要求最簡形式,可能會出現4.0或者1e5等形式,因此用stripTrailingZeros()函數去除末尾0,用toPlainString()函數轉成廣泛計數法輸出。code