今天這個可能有點偷懶,學c++的時候就知道大數計算很複雜,現在一直用java,有幸有大數的方法可以用
那麼今天的演算法就用java偷懶過去吧
對數值很大、精度很高的數進行高精度計算是一類十分常見的問題。比如,對國債進行計算就是屬於這類問題。
T輸入包括多組 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。
對於每組輸入,要求輸出一行,該行包含精確的 R 的 n 次方。輸出需要去掉前置的 0 後不要的 0 。如果輸出是整數,不要輸出小數點。
95.123 12548815620517731830194541.8990253434157159735359672218698527210.4321 20.00000005148554641076956121994511276767154838481760200726351203835429763013462401
5.1234 1543992025569.9285737012664880411466549933187037075116662954767204939530246.7592 929448126.76412102161816443020690903717327667298.999 1090429072743629540498.1075960194566517745610440100011.0100 121.126825030131969720661201
import java.math.BigDecimal;import java.util.Scanner;public class TheBigNumber {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {try {Double r = in.nextDouble();Integer n = in.nextInt();BigDecimal re = new BigDecimal(r.toString());String res = re.pow(n).stripTrailingZeros().toPlainString();if (res.startsWith("0"))res = res.substring(1, res.length());System.out.println(res);} catch (Exception e) {}}}}
作者:jason0539
微博:
部落格:(轉載請說明出處)