51NOD - 1873 初中的算术 【高精度】

1873 初中的算术

基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

Noder现在上初三了,正在开始复习中考。他每天要计算型如 (a× a× a× ⋯× a)n个a 的式子。 其中 0.0

Input

单组测试数据。
第一行有一个实数a和一个整数n,中间用空格分开。 0.0 < a < 99.999,a总是占6位(a长度<=6),0

Input示例

样例输入1
0.4321 20
样例输入2
1.0100 12

Output示例

样例输出1
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
样例输出2
1.126825030131969720661201

题意: 高精度乘法,去掉前导后导的零

分析: 看到别人好多都是用c++过得,自己懒得写高精度了,直接利用java里的几个函数搞定,感觉挺方便的,分别利用到了以下运用,记录下:

    string s;
    BigDecimal x;
    s.charAt(i)      //代表查看字符串s的第i个字符
    x.stripTrailingZeros().toPlainString();    //代表x数转化成无后导零的字符串
    x.toString();    //代表转化成科学计数的字符串
    s.substring(1,s.lenth()-1) //代表截取下标的字符串

参考代码

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

public class N {
    public  static  void main(String[] args) {
        Scanner in = new Scanner(System.in);
        BigDecimal x;
        String z = "0";
        int n;
        while (in.hasNextBigDecimal()) {
            x = in.nextBigDecimal();
            n = in.nextInt();
            x = x.pow(n);
            String s = x.stripTrailingZeros().toPlainString();
            if(s.charAt(0) == '0') {
                s = s.substring(1,s.length());
            }
            System.out.println(s);
        }
    }
}
  • 如有错误或遗漏,请私聊下UP,thx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值