由于种种原因最近一段时间一直情绪不佳,写几个水题娱乐一下。
话说去年寒假学了点JAVA,写了些推箱子之类的东东,但还从来没有用JAVA A过题,很早就听说JAVA直接用大数类做大数和高精度手段很是,今天就来水几把寻点乐子。
POJ1001
Description
This problem requires that you write a program to compute the exact value of Rnwhere 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.