POJ 1131 - Octal Fractions
http://poj.org/problem?id=1131
概要
八進の小数で表現された0以上1以下の数が与えられるので,それを十進で表現したものを答える. 八進で小数点以下 n 桁の小数は多くとも小数点以下 3n 桁の十進で表現できる.
制約
- n についてとくに制約は無い
解法
Java の BigDecimal に逃げた.
poj/1131.java1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner cin = new Scanner(System.in); 7 while (cin.hasNext()) { 8 String s = cin.next(); 9 char[] cs = s.toCharArray(); 10 BigDecimal n = BigDecimal.valueOf(0), eight = BigDecimal.valueOf(8); 11 BigDecimal e = BigDecimal.valueOf(1); 12 for (int i = 2; i < cs.length; i++) { 13 n = n.multiply(eight).add(BigDecimal.valueOf(cs[i] - '0')); 14 e = e.multiply(eight); 15 } 16 n = n.divide(e); 17 System.out.printf("%s [8] = %s [10]\n", s, n); 18 } 19 } 20 }