http://acm.hdu.edu.cn/showproblem.php?pid=1063
依然是高精度,和上一题很像,不过用上一题的方法一直超时?颇为费解。
查了几个函数的用法,直接用函数操作就不超时了?这题mark一下以后还要再看,对超时表示不太理解。
stripTrailingZeros()是去掉后缀0,toPlainString()是转成非指数型的字符串(上一题要知道这两个函数直接秒杀了哈。。。)。startsWith("//字符串1")判断给定字符串是否以字符串1开头(对应的还有endsWith())。
substring()的用法参考百度百科,看一眼就明白了:"unhappy".substring(2) returns "happy","Harbison".substring(3) returns "bison"
View Code
import java.io.*; import java.math.*; import java.util.*; import java.text.*; public class Main { public static void main(String[] args) { Scanner cin=new Scanner (new BufferedInputStream(System.in)); BigDecimal R,temp; int n; while(cin.hasNext()) { R=cin.nextBigDecimal(); n=cin.nextInt(); String s=R.pow(n).stripTrailingZeros().toPlainString(); if(s.startsWith("0.")) s=s.substring(1); System.out.println(s); } } }