由于种种原因最近一段时间一直情绪不佳,写几个水题娱乐一下。
话说去年寒假学了点JAVA,写了些推箱子之类的东东,但还从来没有用JAVA A过题,很早就听说JAVA直接用大数类做大数和高精度手段很是淫荡,今天就来水几把寻点乐子。
POJ1001
Description
Input
Output
Sample Input
95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721 .00000005148554641076956121994511276767154838481760200726351203835429763013462401 43992025569.928573701266488041146654993318703707511666295476720493953024 29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001 1.126825030131969720661201
代码:
import java.util.*; import java.math.*; import java.io.*; public class poj1001 { public static void main(String args[]) { Scanner cin = new Scanner(System.in); while(cin.hasNext()) { String a = cin.next(); int t = cin.nextInt(); BigDecimal ans = new BigDecimal(a); ans = ans.pow(t); String result = ans.stripTrailingZeros().toPlainString(); if(result.charAt(0)=='0') result=result.substring(1); System.out.println(result); } } }
add(),subtract(),pow(),abs()之类的常用运算方法都有,直接拿来用就行了。
BigDecimal关于格式控制的方法多了几个,这对处理各种不同格式的输出是很有用的。
stripTraillingZeros():把不影响数值大小的0全去掉;
1.50 ->1.5;
1.00->1;
这功能很有用吧。
大家都知道JAVA的类一般都要带toString这个方法的,BigDecimal则有toString,toPlainString和toEngineeringString三种表示成字符串的方法,
下面是这三种方法各自的特点:
toString: using scientific notation if an exponent is needed;
toEngineeringString:using engineering notation if an exponent is needed.
toPlainString:without an exponent field.