题目链接:http://poj.org/problem?id=1131
开始竟然逗比的不会,,,,,c语言没学好
就是设小数是0.x1x2x3
转过去就是x1*8^(-1)+x2*8^(-2)+x3*8^(-3)
java的大小数是BigDecimal,add,multiply,divide分别是加乘除
加减乘除模都要求是BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf()
BigDecimal.stripTrailingZeros()是去掉前导0
代码:
import java.io.*;
import java.util.*;
import java.math.BigDecimal;
public class Main {
/**
* @neko01
*/
public static void main(String[] args) {
Scanner cin=new Scanner(new BufferedInputStream(System.in));
String s;
BigDecimal eight=BigDecimal.valueOf(8);
while(cin.hasNext())
{
s=cin.nextLine();
BigDecimal ans=BigDecimal.valueOf(0);
BigDecimal tmp=BigDecimal.valueOf(8);
for(int i=2;i<s.length();i++)
{
ans=ans.add(BigDecimal.valueOf(s.charAt(i)-'0').divide(tmp));
tmp=tmp.multiply(eight);
}
System.out.println(s+" [8] = "+ ans.stripTrailingZeros().toPlainString() + " [10]");
}
}
}