1131:Octal Fractions
概要
8進数の小数が与えられるので10進数の小数に変換して出力する問題。
JavaのBigDecimalを活用する。入力文字列を8進数として解釈するコンストラクタはBigDecimalに無いのでいったんBigIntegerに変換してから元に戻す。
import java.util.*; import java.math.*; class Main { public static void main(String args[]){ Scanner in = new Scanner(System.in); while(in.hasNextLine()){ String inp = in.nextLine(); String sub = ""; for(int i=0; i<inp.length(); i++) if('1'<=inp.charAt(i)&& inp.charAt(i)<='9'){ sub = inp.substring(i); break; } BigInteger n = new BigInteger(sub, 8); BigDecimal x = new BigDecimal(n,0); x = x.divide((new BigDecimal("8")).pow(inp.length()-2)); System.out.println(inp + " [8] = " + x.toPlainString() + " [10]"); } } }