# zju1086 （高精度）解题报告

Octal Fractions

Time Limit: 1 Second      Memory Limit: 32768 KB

Fractions in octal (base 8) notation can be expressed exactly in decimal notation. For example, 0.75 in octal is 0.963125 (7/8 + 5/64) in decimal. All octal numbers of n digits to the right of the octal point can be expressed in no more than 3n decimal digits to the right of the decimal point.

Write a program to convert octal numerals between 0 and 1, inclusive, into equivalent decimal numerals. The input to your program will consist of octal numbers, one per line, to be converted. Each input number has the form 0.d1d2d3 ... dk, where the di are octal digits (0..7). There is no limit on k. Your output will consist of a sequence of lines of the form

0.d1d2d3 ... dk [8] = 0.D1D2D3 ... Dm [10]

where the left side is the input (in octal), and the right hand side the decimal (base 10) equivalent. There must be no trailing zeros, i.e. Dm is not equal to 0.

SAMPLE INPUT

0.75
0.0001
0.01234567

SAMPLE OUTPUT

0.75 [8] = 0.953125 [10]
0.0001 [8] = 0.000244140625 [10]
0.01234567 [8] = 0.020408093929290771484375 [10]

#include<iostream>

#include<cstring>

#include<cstdlib>

using namespace std;

int main()

{

char result[10000],a[10000];//result[]是十进制数结果，a[]是输入的8进制数

int count,len,i,j,num,temp;//len是8进制数的长度，count是十进制数的长度，num是每次取8进制数的一位转化成的整型数

while(scanf("%s",a)!=EOF)

{

count=0;//十进制数一开始的长度为0

len=strlen(a);

for(i=0;i<10000;++i)

result[i]='0';      //每次都先将结果数组置0

for(i=len-1;i>=2;--i)//从8进制数的最后一位开始取，进行高精度除法

{

num=int(a[i])-'0';//num用来存放整型数

for(j=0;j<count||num;++j)//判断条件为j超过十进制数的长度和num=0,即直到num除尽

{

if(j<count)

temp=num*10+(int(result[j])-'0');

else

temp=num*10;

result[j]=char(temp/8)+'0';//商

num=temp%8;//余数

}

result[j]='/0';//设置result数组的结尾标志符，以便输出和求长度；

count=strlen(result);//count为result数组的长度即十进制数的当前长度

}

cout<<a<<" [8] = 0."<<result<<" [10]"<<endl;

}

return 0;

}

• 本文已收录于以下专栏：

## ZJU2017 Simple Arithmetics - 高精度计算+格式处理

ZJU2017 PKU1396 Simple Arithmetics - Central Europe 2000题目描述：输入两个数字和一个操作符，数字长度不超过500，操作符可以是+,-,*任意一种...
• tiaotiaoyly
• 2008年02月11日 00:50
• 2146

## POJ3331解题报告 高精度幂

The Idiot of the Year Contest!Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 3074 Accepte...
• xinghongduo
• 2011年02月01日 21:12
• 737

## poj解题报告——2313

• Lingfu74
• 2015年07月28日 13:36
• 555

## NOIP2016提高组解题报告

D1T1玩具谜题   模拟 D1T2天天爱跑步   LCA，树链剖分 D1T3换教室  DP，数学期望，最短路 D2T1组合数问题   数学 D2T2蚯蚓   单调队列，模拟 D2T...
• qwerty1125
• 2017年09月10日 20:42
• 274

## 算法分析与设计解题报告

• u011394079
• 2014年09月24日 11:42
• 255

## POJ 1001 求高精度幂(高精度)

Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如，对国债进行计算就是属于这类问题。  现在要你解决的问题是：对一个实数R( 0.0 Input T输入包括多...
• u012618882
• 2013年10月29日 21:50
• 1457

## 高精度减法——一步一步算法篇

• zhhe0101
• 2016年05月15日 19:20
• 1711

## 高精度 A+B Problem

• YALI_xunzhen
• 2016年02月04日 15:14
• 555

## pku 1001 高精度 Exponentiation 解题报告

• find_my_dream
• 2009年02月22日 13:14
• 2643

## HDU 1254 推箱子 解题报告

HDU 1254的解题报告
• lawk97
• 2016年09月05日 10:17
• 388

举报原因： 您举报文章：zju1086 （高精度）解题报告 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)