由於種種原因最近一段時間一直情緒不佳,寫幾個水題娛樂一下。
話說去年寒假學了點JAVA,寫了些推箱子之類的東東,但還從來沒有用JAVA A過題,很早就聽說JAVA直接用大數類做大數和高精度手段很是淫蕩,今天就來水幾把尋點樂子。
POJ1001
Description
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.
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.