土下座しながら探索中

主に競技プログラミング

UVa 748 : Exponentiation

問題リンク:Exponentiation

問題概要;
とても大きい値rとinteger n が与えられる
r^nを計算せよ
出力する際には、先頭の0と末尾に連続する0は削除すること

解法:
javaBigDecimalを使って計算する
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("");
	    }
    }
}