HDU Exponentiation 1063 Java大数题解
Exponentiation
Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6973 Accepted Submission(s): 1975
This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
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就变得其简单无比。
主要就一句代码:
String ans = a.pow(b).stripTrailingZeros().toPlainString();
去零和转换为纯字符串输出。
这使用C++要数十行代码。
对比C++解法:http://blog.csdn.net/kenden23/article/details/23997827
相比之下,java就成了水题了,学不到什么东西。
import java.math.BigDecimal; import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { BigDecimal a = scan.nextBigDecimal(); int b = scan.nextInt(); String ans = a.pow(b).stripTrailingZeros().toPlainString(); if (ans.startsWith("0")) ans = ans.substring(1); System.out.println(ans); } scan.close(); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。