51nod 1873 初中的算术【Java BigDecimal/高精度小数】

1873 初中的算术

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

 收藏

 关注

Noder现在上初三了,正在开始复习中考。他每天要计算型如 (a× a× a× ?× a)n个a 的式子。 其中 0.0<a<99.999,0<n<26 。

虽然Noder会计算,但是老是算错,现在他想要你来写一个程序输出正确的结果,以便他核对。

Input

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

Output

输出一个实数表示结果,不要输出前导0,后面多余的0也不要输出,如果是整数不要输出小数点。

Input示例

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

Output示例

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

【代码】:

import java.util.*;
import java.math.*;
import java.math.BigDecimal;
import java.util.*;

public class Main {
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        double a = cin.nextDouble();
        int n = cin.nextInt();
        BigDecimal ans=new BigDecimal("1");
        for(int i = 0; i < n; i++)
            ans = ans.multiply(BigDecimal.valueOf(a));
        String s=ans.stripTrailingZeros().toPlainString();
        int i=0;
        if(s.charAt(0)==‘0‘&&s.charAt(1)==‘.‘)
            i=1;
        for(;i<s.length();i++)
            System.out.print(s.charAt(i));
    }
}

Java

时间: 2024-11-07 23:50:51

51nod 1873 初中的算术【Java BigDecimal/高精度小数】的相关文章

51nod 1873 初中的算术

1873 初中的算术 基准时间限制:1 秒 空间限制:131072 KB Noder现在上初三了,正在开始复习中考.他每天要计算型如 (a× a× a× ?× a)n个a 的式子. 其中 0.0<a<99.999,0<n<26 . 虽然Noder会计算,但是老是算错,现在他想要你来写一个程序输出正确的结果,以便他核对. Input 单组测试数据. 第一行有一个实数a和一个整数n,中间用空格分开. 0.0 < a < 99.999,a总是占6位(a长度<=6),0&

1873 初中的算术

Noder现在上初三了,正在开始复习中考.他每天要计算型如 (a× a× a× ?× a)n个a 的式子. 其中 0.0<a<99.999,0<n<26 . 虽然Noder会计算,但是老是算错,现在他想要你来写一个程序输出正确的结果,以便他核对. Input 单组测试数据. 第一行有一个实数a和一个整数n,中间用空格分开. 0.0 < a < 99.999,a总是占6位(a长度<=6),0<n<2

BigDecimal类(高精度小数)

位置:java.math.BigDecimal 作用:提供高精度小数数据类型及相关操作 一.基本介绍 BigDecimal为不可变的.任意精度的有符号十进制数,其值为(unscaledValue * 10-scale)其中,unscaledValue(非标度值)为任意精度的整数.scale(标度)为32位整型(可为负) 提供以下操作:算术.标度操作.舍入.比较.哈希算法和格式转换. 用户能通过提供MathContext对象完全控制BigDecimal的舍入行为(也可使用类内提供的8种舍入模式).

Java中的高精度整数和高精度小数

在实际编码中,会遇到很多高精度的事例,比如,在计算金钱的时候就需要保留高精度小数,这样计算才不会有太大误差: 在下面的代码中,我们验证了,当两个float型的数字相加,得到的结果和我们的预期结果是有误差的,为了减小和防止这种误差的出现,我们需要使用BigInteger类和BigDecimal类来计算. package com.ietree.base.number; import java.math.BigDecimal; import java.math.BigInteger; public c

hdu4927 Series 1(组合+公式 Java大数高精度运算)

题目链接: Series 1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 423    Accepted Submission(s): 146 Problem Description Let A be an integral series {A1, A2, . . . , An}. The zero-order series o

BigDecimal 高精度计算 熟悉扩展,java除法保留小数问题

java保留两位小数问题: 方式一: 四舍五入  double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  保留两位小数  --------------------------------------------------------------- 方式二

java bigDecimal and double

Java BigDecimal和double BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮点数.其中,unscaledValue是一个BigInteger,scale是一个int.从这个表示方法来看,BigDecimal只能标识有限小数,不过可以表示的数据范围远远大于double,在实际应用中基本足够了. 下面提一下两个精度问题: 问题一:BigDecimal的精度问题(StackOve

去掉BigDecimal类型变量小数点后多余的零

       业务背景:mysql中A表中的B字段的类型是decimal类型,小数位数是三位,某一条数据的值是3000000,在Java中查询出来的结果是3000000.000,这样显示在页面中不太好看,用户希望看到是3000000.       解决办法:使用 stripTrailingZeros().toPlainString()来解决.下面举例说明如何去掉BigDecimal类型变量小数点后多余的零: BigDecimal testData = new BigDecimal("300000

Java中取小数点后两位(四种方法)

摘自http://irobot.iteye.com/blog/285537 Java中取小数点后两位(四种方法) 一 Long是长整型,怎么有小数,是double吧     java.text.DecimalFormat   df=new   java.text.DecimalFormat("#.##");     double   d=3.14159;     System.out.println(df.format(d)); 二 java.math.BigDecimal     B