您的位置:首页 > 编程语言 > Java开发

Exponentiation(java 大实数)

2015-07-31 20:45 417 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1063

Exponentiation

TimeLimit:2000/500MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)
TotalSubmission(s):8076AcceptedSubmission(s):2279


[align=left]ProblemDescription[/align]
Problemsinvolvingthecomputationofexactvaluesofverylargemagnitudeandprecisionarecommon.Forexample,thecomputationofthenationaldebtisataxingexperienceformanycomputersystems.

ThisproblemrequiresthatyouwriteaprogramtocomputetheexactvalueofRnwhereRisarealnumber(0.0<R<99.999)andnisanintegersuchthat0<n<=25.

[align=left]Input[/align]
TheinputwillconsistofasetofpairsofvaluesforRandn.TheRvaluewilloccupycolumns1through6,andthenvaluewillbeincolumns8and9.

[align=left]Output[/align]
TheoutputwillconsistofonelineforeachlineofinputgivingtheexactvalueofR^n.Leadingzerosshouldbesuppressedintheoutput.Insignificanttrailingzerosmustnotbeprinted.Don'tprintthedecimalpointiftheresultisaninteger.

[align=left]SampleInput[/align]

95.12312
0.432120
5.123415
6.75929
98.99910
1.010012

[align=left]SampleOutput[/align]

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

importjava.math.BigDecimal;
importjava.util.Scanner;

publicclassMain{
publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
while(s.hasNext()){
BigDecimalb=s.nextBigDecimal();
BigDecimalans=BigDecimal.valueOf(1);
intn=s.nextInt();
while(n-->0)
ans=ans.multiply(b);
Stringstring=ans.stripTrailingZeros().toPlainString().toString();
if(string.startsWith("0."))
string=string.substring(1);
System.out.println(string);
}
s.close();
}
}


1、stripTrailingZeros(),返回类型为BigDecimal的小于此数的但除去尾部的0的数值。

2、toPlainString(),返回BigDecimal类型的String类型字符串。

3、startsWith(),确定此实例的开头是否与指定的字符串匹配。

4、substring(),返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。

大家都知道JAVA的类一般都要带toString这个方法的,BigDecimal则有toString,toPlainString和toEngineeringString三种表示成字符串的方法,


下面是这三种方法各自的特点:


toString:usingscientificnotationifanexponentisneeded;


toEngineeringString:usingengineeringnotationifanexponentisneeded.


toPlainString:withoutanexponentfield.




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: