加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

杭电OJ(HDOJ)1063题:Exponentiation(大数操作——幂运算)

发布时间:2020-12-14 02:50:53 所属栏目:大数据 来源:网络整理
导读:题意: 操作数有多行,每一个输入一个浮点数R(0,99.99)和一个整数n(0,25],求出R^n。不可使用科学计数法表示结果,如果结果小于1,只输出小数点和小数部分。 示例输入: 95.123 12 0.4321 20 5.1234 15 6.7592 ?9 98.999 10 1.0100 12 示例输出: 548815

题意:

操作数有多行,每一个输入一个浮点数R(0,99.99)和一个整数n(0,25],求出R^n。不可使用科学计数法表示结果,如果结果小于1,只输出小数点和小数部分。

示例输入:

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

示例输出:

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

解决方案:

使用java中的BigDecimal类,表示Big小数,里面封装了相关的数学操作函数(+、-、*、/、^等等),正常情况,当后面小数部分大太,输出时会采用科学计数法,就是输出前会先将结果转换成String类型,再判断其第一位有用数字(整数部分)是不是0,如果是0,刚从下标为1开始输出。

BigDecimal类重载了math类中的pow()函数,用于幂运算。

附:Java 1.7 APIs

import java.math.BigDecimal;
import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        BigDecimal sum;// 声明两个Big小数
        int n;
        while (input.hasNextFloat())
        {
            sum = input.nextBigDecimal();// 输入sum
            n = input.nextInt();// 输入sum
            sum = sum.pow(n);// sum=sum^n
            sum = sum.stripTrailingZeros();// 剔除sum尾部多余无用的0
            String str = sum.toPlainString();// 将sum转换为一个srting
            if (str.charAt(0) == '0')// 根据题意:0.1应只输出.1
                System.out.println(str.substring(1));
            else
                System.out.println(str);
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读