poj1131-Octal Fractions(进制转换)

一,题意:
  求一个八进制小数的十进制。
二,思路:
  暴力数组模拟计算,注意千万不带小数做除法运算
  1,对于八进制小数,转换成十进制,书写形式分析:
  2,对其除法过程进行模拟:
  3,输出。
三,步骤:
  1,0.756[8] -> ( (6/8 + 5)/8 + 7)/8 [10]
  2, 除法过程:如 0.75
    i,5/8的结果要是整数,那么就5000/8=625 (5加几个0能被8整除就加几个0)
    ii,625不能直接加上7,应该加上7000,得到7625;
    iii,7625不能被8整除,那么就7625000/8;
  3,输出即可。

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 const int N = 10010;
 5 char d[N] ;
 6 int ans[N] ;
 7 int main(){
 8     while(cin>>d){
 9         memset(ans,0,sizeof(ans));  //每组数据都必须先初始化ans[]
10         int d2;
11         int len = strlen(d);       //记录小数的位数
12         int t = 0 ;
13         for(int i = len - 1 ; i > 1 ; i--){
14             d2 = d[i] - ‘0‘ ;     //d2来接收小数的每一位的数
15             int k = 0 , j = 0 ;
16             while(j<t || d2){    //此循环内语句为数组模拟除法计算
17                 d2 = d2*10 + ans[j++];
18                 ans[k++] = d2/8 ;
19                 d2 %= 8 ;
20             }
21             t = k;     //记录最后的得到的位数
22         }
23         cout<<d<<" [8] = 0." ;
24         for(int i = 0 ; i < t ; i++)
25             cout<<ans[i];
26         cout<<" [10]"<<endl;
27     }
28     return 0;
29 }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 14:40:43

poj1131-Octal Fractions(进制转换)的相关文章

Python内置函数进制转换的用法

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

php进制转换函数

php进制转换函数如下: bindec() — 二进制转换为十进制decbin() — 十进制转换为二进制dechex() — 十进制转换为十六进制decoct() — 十进制转换为八进制hexdec() — 十六进制转换为十进制octdec() — 八进制转换为十进制base_convert()– 在任意进制之间转换数字 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo

java高精度进制转换

POJ1131   由于本题只有小数部分(整数部分均为0),故在进制转换的之后只能自己手写转换方法了.   8进制转换10进制的方法为,以0.75为例,应是7*8^-1 + 5*8^-2.所以呢,可以直接定位到小数点后一位,采用此方法进行计算. 1 import java.util.*; 2 import java.math.*; 3 4 public class Main 5 { 6 public static void main(String []args) 7 { 8 Scanner ci

Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

原理之一,进制转换

原理之一,进制转换 日常生活中采用个数字都是十进制,而计算机采用的是运算更简单.易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写. 进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二,包含的数字(0.1) 八进制:逢八进一,借八当一,包含(0.1.2.3.4.5.6.7) 十六进制:逢十六当一,以一当十六,包含(0.1.2.3.4.5.6.7.8.9.10(A).11(B).12(C).13(D).14(E

NOIP2000 进制转换

题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基