每天一道算法_2_求高精度幂

来源:互联网 发布:excel表格数据合计 编辑:程序博客网 时间:2024/03/29 16:27

今天这个可能有点偷懒,学c++的时候就知道大数计算很复杂,现在一直用java,有幸有大数的方法可以用

那么今天的算法就用java偷懒过去吧

Description

对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 

现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。

Input

T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。

Output

对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。

Sample Input & Sample Output

95.123 12548815620517731830194541.8990253434157159735359672218698527210.4321 20.000000051485546410769561219945112767671548384817602007263512038354297630134624015.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

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

原创粉丝点击