[POJ 1001] Exponentiation JAVA 解题报告

用户头像
一直AC一直爽
关注
发布于: 2020 年 07 月 20 日
[POJ 1001] Exponentiation JAVA解题报告

求高精度幂



Time Limit: 500MSMemory Limit: 10000K



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

95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12


Sample Output

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

解决思路

  这是一道高精度的题,用C,C++解题会比较累,因为语言本身没有处理高精度数据的类或者库函数。但是java的BigDecimal就像一把利刃,特别适合用来处理高精度的题目,代码可以写得特别精简。

下面贴代码:

package com.igeekspace;
import java.io.*;
import java.math.BigDecimal;
public class Main {
private static final boolean debug = false;
static BufferedReader bufferedReader;
static PrintWriter printWriter;
private static void solve() throws IOException {
while (true) {
String input = bufferedReader.readLine();
if (input == null) {
break;
}
double r = Double.parseDouble(input.substring(0, 6).trim());
int n = Integer.parseInt(input.substring(7).trim());
BigDecimal bigDecimal = new BigDecimal(Double.toString(r));
if (debug) {
printWriter.println("r is " + r + "; n is " + n);
printWriter.println("answer is :" + bigDecimal.pow(n));
}
String answer = bigDecimal.pow(n).stripTrailingZeros().toPlainString();
printWriter.println(answer.startsWith("0") ? answer.substring(1) : answer);
}
}
public static void main(String[] args) throws IOException {
bufferedReader = new BufferedReader(new InputStreamReader(System.in));
printWriter = new PrintWriter(new OutputStreamWriter(System.out));
solve();
printWriter.flush();
}
}



发布于: 2020 年 07 月 20 日 阅读数: 15
用户头像

一直AC一直爽

关注

我就是我,不一样的花火。 2020.07.19 加入

最近专注刷题。

评论

发布
暂无评论
[POJ 1001] Exponentiation JAVA解题报告