UVa 748 : Exponentiation
問題リンク:Exponentiation
問題概要;
とても大きい値rとinteger n が与えられる
r^nを計算せよ
出力する際には、先頭の0と末尾に連続する0は削除すること
解法:
java で BigDecimalを使って計算する
BigDecimalからStringに変換する際には指数フィールドをなしにしたいのでtoString()ではなくtoPlainString()を使う事
コード:
import java.util.*; import java.io.*; import java.math.*; class Main { public static void main(String args[]) { Scanner in = new Scanner(System.in); while(in.hasNext()) { String r = in.next(); int n = in.nextInt(); BigDecimal R = new BigDecimal(r).pow(n); String ans = R.toPlainString(); boolean notPrint[] = new boolean[ans.length()]; for(int i=0;i<ans.length();i++)notPrint[i] = false; for(int i=0;i<ans.length();i++) { if(ans.charAt(i) == '0')notPrint[i] = true; else break; } for(int i=ans.length()-1;i>=0;i--) { if(ans.charAt(i) == '0')notPrint[i] = true; else break; } for(int i=0;i<ans.length();i++) if(!notPrint[i])System.out.print(ans.charAt(i)); System.out.println(""); } } }