03:八进制小数

03:八进制小数

总时间限制: 
1000ms

内存限制: 
65536kB
描述

八进制有限小数均可以用十进制有限小数精确地表示。比如,八进制里面的0.75等于十进制里面的0.963125 (7/8 + 5/64)。所有小数点后位数为n的八进制小数都可以表示成小数点后位数不多于3n的十进制小数。

你的任务是写一个程序,把(0,1)之间的八进制小数转化成十进制小数。

输入
一行,包含一个八进制小数。每个小数的形式是0.d1d2d3 ... dk,这里di是八进制数0...7,dk不等于0,而且已知0 < k < 15。
输出
输入如下形式的一行

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

这里左边是输入的八进制小数,右边是相等的十进制小数。输出的小数末尾不能有0,也就是说Dm不等于0。注意空格位置。

样例输入
0.75
样例输出
0.75 [8] = 0.953125 [10]
来源
翻译自 Southern African 2001 的试题

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 using namespace std;
 6 double ans;
 7 char a[1001];
 8 int main()
 9 {
10     double zhishu=1;
11     double fenmu;
12     gets(a);
13     int l=strlen(a);
14     for(int i=2;i<l;i++)
15     {
16         fenmu=pow(8,zhishu);
17         zhishu++;
18         ans=ans+(double)(a[i]-48)/fenmu;
19     }
20     //cout<<a<<" [8] = "<<ans<<" [10]";
21     printf("%s [8] = %.45g [10]",a,ans);
22     return 0;
23 }

时间: 2024-10-13 21:33:03

03:八进制小数的相关文章

openjudge 03:八进制小数

总时间限制: 1000ms 内存限制: 65536kB 描述 八进制有限小数均可以用十进制有限小数精确地表示.比如,八进制里面的0.75等于十进制里面的0.963125 (7/8 + 5/64).所有小数点后位数为n的八进制小数都可以表示成小数点后位数不多于3n的十进制小数. 你的任务是写一个程序,把(0,1)之间的八进制小数转化成十进制小数. 输入 一行,包含一个八进制小数.每个小数的形式是0.d1d2d3 ... dk,这里di是八进制数0...7,dk不等于0,而且已知0 < k < 1

poj 百练 2765 八进制小数(精度问题)

2765:八进制小数 查看 提交 统计 提示 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 八进制小数可以用十进制小数精确的表示.比如,八进制里面的0.75等于十进制里面的0.963125 (7/8 + 5/64).所有小数点后位数为n的八进制小数都可以表示成小数点后位数不多于3n的十进制小数. 你的任务是写一个程序,把(0, 1)中的八进制小数转化成十进制小数. 输入 输入包括若干八进制小数,每个小数占用一行.每个小数的形式是0.d1d2d3 ... dk,这里di

C#控制台基础 无符号八进制小数转换为十进制

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Co

1.13.3

03:八进制小数 总时间限制: 1000ms 内存限制: 65536kB 描述 八进制有限小数均可以用十进制有限小数精确地表示.比如,八进制里面的0.75等于十进制里面的0.963125 (7/8 + 5/64).所有小数点后位数为n的八进制小数都可以表示成小数点后位数不多于3n的十进制小数. 你的任务是写一个程序,把(0,1)之间的八进制小数转化成十进制小数. 输入 一行,包含一个八进制小数.每个小数的形式是0.d1d2d3 ... dk,这里di是八进制数0...7,dk不等于0,而且已知0

整理小朋友在noi.openjudge上的作业(1)

NOI(题库正在建设中,做题纪录有可能会被删除,请注意) 第一章的统计放前面 1 编程基础之输入输出 10 0 0% 最基础有空补刷 2 编程基础之变量定义.赋值及转换 10 0 0% 最基础有空补刷 3 编程基础之算术表达式与顺序执行 20 0 0% 最基础有空补刷 4 编程基础之逻辑表达式与条件分支 21 0 0% 最基础有空补刷 5 编程基础之循环控制 45 10 22% 最基础有空补刷 6 编程基础之一维数组 15 5 33% 最基础有空补刷 7 编程基础之字符串 35 0 0% 有必要

ZOJ 1806 (小数高精度)

题意:八进制小数转化成十进制的小数. 0.d1d2d3 ... dk [8] = 0.D1D2D3 ... Dm [10] 例: 0.75 [8] = 7*8^-1+5*8^-2 = ( 5/8 + 7 ) / 8 = 0.953125 [10] 算法:主要就是实现上面的秦九韶算法. 实现:模拟手算除法: #include<iostream> #include<cstdio> #include<cstring> using namespace std; const in

二进制、八进制和十六进制

二进制 用0.1两个数字来表示数值,这就是二进制(Binary).对于二进制,进行加法运算时逢二进一,进行减法运算时借一当二. 1) 二进制加法:1+0=1.1+1=10.11+10=101.111+111=1110 二进制加法示意图 2) 二进制减法:1-0=1.10-1=1.101-11=10.1100-111=101 二进制减法示意图 八进制 八进制有 0~7 共8个数字,基数为8,加法运算时逢八进一,减法运算时借一当八. 1) 八进制加法:3+4=7.5+6=13.75+42=137.2

进制间的相互转化

原文:进制间的相互转化 进制间的转换如下图所示: 由上图可知,进制间共有12种转换.下面将逐一介绍这12种转换方法 (1)二进制转化为八进制 原理:<1>1位八进制数可以用3位二进制数码表示 <2>以小数点为边界:若小数点左侧(即整数部分)不是3的整数倍,则在最左侧补零,对小数点右侧(即小数部分)应在最右侧补零 例:   将(10.101)2 转化为八进制. 解:(1)将二进制补足3位 即:(010.101)2 (2)按权值转换 (0×22 + 1×21 +0×20).(1×22

redis的五种存储类型的具体用法

String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis->set('key','TK'); $redis->set('number','1'); $redis->setex('key',5,'TK'); //设置有效期为5秒的键值 $redis->psetex('key',5000,'TK'); //设置有效期为5000毫秒(同5秒)的键值 $re