之前寫過用vector、string實現大數加法,現在用java的BigDecimal類,代碼簡單很多。但是在online-judge上,java的代碼運行時間和內存大得多。
java大數加法:求a+b
import java.util.*; import java.io.*; import java.lang.String; import java.math.BigDecimal; public class p1036 { public static void main(String[] args) { String s1,s2; Scanner cin = new Scanner(System.in); s1 = cin.next(); s2 = cin.next(); BigDecimal b1 = new BigDecimal(s1); BigDecimal b2 = new BigDecimal(s2); System.out.println(b1.add(b2)); cin.close(); } }
用這個類,乘除法也很簡單,不管是整形還是float,詳見http://docs.oracle.com/javase/7/docs/api/ 。
測試輸入:
130618656970218663498347545006237201871512019139119220715666434
305161091397192795974451967699240485213039650461566304271331231
421952713061865697021866349834754500623720187151201913911922071
566643430516109139719279597445196769924048521303965046156630427
13312314219527
130618656970218663498347545006237201871512019139119220715666434
305161091397192795974451967699240485213039650461566304271331231
421952713061865697021866349834754500623720187151201913911922071
566643430516109139719279597445196769924048521303965046156630427
13312314219527
輸出:
261237313940437326996695090012474403743024038278238441431332868
610322182794385591948903935398480970426079300923132608542662462
843905426123731394043732699669509001247440374302403827823844143
133286861032218279438559194890393539848097042607930092313260854
26624628439054
java大數乘法:求2^(n+1)-1
import java.util.*; import java.io.*; import java.math.BigDecimal; //2^(n+1)-1 public class Main { public static void main(String[] args) { BigDecimal b; BigDecimal diff=new BigDecimal(-1); int n; Scanner cin = new Scanner(System.in); while(cin.hasNext()) { n = cin.nextInt(); b=new BigDecimal(2); b=b.pow(n+1); System.out.println((b.add(diff)).toString()); } } }