杭电OJ(HDOJ)1063题:Exponentiation(大数操作——幂运算)
题意:操作数有多行,每一个输入一个浮点数R(0,99.99)和一个整数n(0,25],求出R^n。不可使用科学计数法表示结果,如果结果小于1,只输出小数点和小数部分。 示例输入:95.123 12 示例输出:548815620517731830194541.899025343415715973535967221869852721 解决方案:使用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); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |