Time limit: 3.000 seconds
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=97&page=show_problem&problem=689
http://poj.org/problem?id=1001
Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.
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 .
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
Description
Input
Output
参考资料:正则表达式30分钟入门教程
完整代码:
/*UVa: 0.242s*/ /*POJ: 125ms,3340KB*/ import java.util.*; import java.math.*; import java.io.*; public class Main { static Scanner cin = new Scanner(new BufferedInputStream(System.in)); public static void main(String[] args) { while (cin.hasNext()) { BigDecimal R = cin.nextBigDecimal(); int n = cin.nextInt(); String str = R.pow(n).stripTrailingZeros().toPlainString(); // 返回移除所有尾部零的,不带指数字段的此BigDecimal的字符串表示形式 if (str.indexOf("0") < str.indexOf(".")) str = str.replaceFirst("^0*", ""); // ^匹配字符串的开始,*表示重复零次或更多次 System.out.println(str); } } }
Source