[POJ]1001 乘方计算

来源:互联网 发布:网络代理合同范本 编辑:程序博客网 时间:2024/06/05 06:54

Description
Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.

This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
Input
The input will consist of a set of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.
Output
The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don’t print the decimal point if the result is an integer.

题目描述:这个没什么说的了,求一个浮点数R的n次方。输出在一行中,给出准确的R的n次幂,开头为0的输出应省略,无意义的末位零绝不能出现。若输出为整数,则不能输出小数点。题目限制还是很多的。

算法思想: 刚查阅资料,java中有一个关于BigDecimal的类,专门是封装了关于大数的处理。来试一试。

```import java.math.BigDecimal;import java.util.Scanner;public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner input = new Scanner(System.in);        while (input.hasNext()) {            String bigNumberString = input.next();            int n = input.nextInt();            BigDecimal R = new BigDecimal(bigNumberString);            R = R.pow(n);            String answer = R.stripTrailingZeros().toPlainString();            if (answer.charAt(0) == '0') {                answer = answer.substring(1);            }            System.out.println(answer);                 }    }}

这里有一些BigDecimal类的方法说明一下。
stripTrailingZeros() ,去掉BigDecimal后面的0。
toPlainString(),返回BigDecimal类型的String类型字符串。

0 0
原创粉丝点击