joj 1004: Octal Fractions
来源:互联网 发布:网站防sql注入 编辑:程序博客网 时间:2024/05/28 15:34
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.750.00010.01234567
SAMPLE OUTPUT
0.75 [8] = 0.953125 [10]0.0001 [8] = 0.000244140625 [10]0.01234567 [8] = 0.020408093929290771484375 [10]
/*
孔牛用的秦九韶算法,我这里贴的算法是利用千进制数作为中间媒介来达到八进制与十进制之间的转换,时间上一样,其实算法的本质也是一样(早期的代码,比较乱);
*/
#include <iostream>
#include <stdio.h>
#include <memory>
#include <string.h>
using namespace std;
const int maxn=2000;
double oct[8]={0,125,250,375,500,625,750,875};
int main ()
{
char str[maxn];
int oc[maxn],dec[3*maxn];
while (memset(str,'/0',sizeof(str)),cin>>str)
{
int i,len=strlen(str),j;
for( i=0 ,j=len-1;str[j]!='.' ; i++,j--)
oc[i]=str[j]-48;
cout<<str<<" [8] = 0.";
for( i=0 ;i<len-2 ; i++)
for( j=0 ; j<len-2-i ; j++)
{
oc[j]=oc[j]*125;
if( oc[j]>999)
{
oc[j+1]+=oc[j]/1000;
oc[j]=oc[j]%1000;
}
}//千进制 (将原数×125存到新的数组里)
for(i=len-3 ; i>0 ;i--)
{
if(oc[i]>99)
cout<<oc[i];
else if(oc[i]<100 && oc[i]>9)
cout<<"0"<<oc[i];
else if(oc[i]<10)
cout<<"00"<<oc[i];
}// 3位一输出,不够的加前导零;
if (oc[0]%10)cout<<oc[0];
else if(oc[0]%100)cout<<oc[0]/10;
else if(!(oc[0]%100))cout<<oc[0]/100;
//清后缀零
cout<<" [10]/n" ;
}
return 0;
}
- joj 1004: Octal Fractions
- Octal Fractions
- Octal Fractions c++ ACM
- ZOJ1086 Octal Fractions
- zoj 1086 Octal Fractions
- poj 1131 Octal Fractions
- poj 1131Octal Fractions
- zoj 1086 Octal Fractions
- (高精度) Octal Fractions (P1131)
- poj 1131 Octal Fractions
- POJ 1131 Octal Fractions
- poj1311 Octal Fractions
- Octal Fractions POJ
- poj 1131 Octal Fractions java
- acm pku 1131 Octal Fractions
- ZOJ 1086Octal Fractions undone
- 大数运算-除法-Octal Fractions
- ZOJ1086——Octal Fractions
- poj 3261 Milk Patterns
- 用Ajax实现多级联动下拉列表For JSP(无限级别,JSON传输数据,含全国地区数据库
- 程序员的思想境界
- KeyListener,NumberKeyListner
- asp.net 中文Cookie乱码问题
- joj 1004: Octal Fractions
- POJ 1051 P,MTHBGWB 简单字符串转换
- 真男人 最自然
- 习题(字节顺序)
- 不使用调试器查看堆栈的调用情况(CallTrace)
- 检测不了的错误(2) --- 分析
- android的Android 中Intent和PendingIntent的区别(转)
- java基础整理4--面向对象
- 实现最小高度,兼容Ie6,点击图片后留下的边框纹纹,块级元素浮动