每天一道算法_求高精度幂
今天这个可能有点偷懒,学c++的时候就知道大数计算很复杂,现在一直用java,有幸有大数的方法可以用
那么今天的算法就用java偷懒过去吧
import java.math.BigDecimal;import java.util.Scanner;public class TheBigNumber {public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {try {Double r = in.nextDouble();Integer n = in.nextInt();BigDecimal re = new BigDecimal(r.toString());String res = re.pow(n).stripTrailingZeros().toPlainString();if (res.startsWith("0"))res = res.substring(1, res.length());System.out.println(res);} catch (Exception e) {}}}}
作者:jason0539
微博:http://weibo.com/2553717707
博客:http://blog.csdn.net/jason0539(转载请说明出处)
- 1楼qq245282209昨天 20:54
- BigDecimal re = new BigDecimal(r.toString()); n String res = re.pow(n).stripTrailingZeros().toPlainString(); nnn这两句是什么意思??关键是那个Bigdecimal类,n还有这几个方法。pow(),stripTrailingZeros(),toPlainString(), n不太懂
- Re: jason0539昨天 23:00
- 回复qq245282209nBigdecimal类就是专门对付这种大数的类,方法的话,pow()就是求多少次方的,stripTrailingZeros()是去掉结果多余的0,toPlainString()也是格式化的一种,好像是去掉指数之类的