奋斗小蜗牛在请客

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描写叙述

一路艰辛一路收获。成功爬过金字塔的小蜗牛别提多高兴了。这不为了向以前帮助他的哥们们表达谢意,蜗牛宴请这些亲朋好友。

席间。蜗牛发现老鹰一直愁眉不展。就关切的问下老鹰。老鹰说:“近来。有一道题我一直没解决,非常是郁闷”。蜗牛说:“说说看,看能不能帮你解决掉。老朋友”。

老鹰说:“给一个数。用二进制表达,假设这个数转化为二进制后小数位超过20位。那么仅仅要前二十位,其余的不要”,小蜗牛如今非常忙。没时间帮助老鹰。

   亲爱的兄弟姐妹们,不知道你是否能帮忙解决这个问题。来试下,加油!

输入
多组測试数据。
每组输入一个数N(不超double)
输出
输出相应的二进制(假设小数部分前20所有为0,则将小数部分视为0,不输出小数部分,不输出多余部分比方:(不输出1.00100000000000000000而输出1.001)
例子输入
1
1.5
0.000001
0.000000999
例子输出
1
1.1
0.00000000000000000001
0.00000000000000000001

解题思路:

        能够将小数分为整数和小数两部分,然后分别转换成二进制,整数小数都要用数组来存储转换信息,避免越界。

        整数转换为二进制用到的是辗转取余法,而小数转换为二进制用到的是相乘取整法。

        求小数的整数和小数部分,用(int)求得其整数部分。然后本值减去整数部分即为小数部分。

       注意小数点的输出条件

代码

#include<stdio.h>
#include<string.h>
int zheng[10000];
int xiao[25];
int main()
{
int i;
double x;
int max;
double min;
int numz,numx;
while(scanf("%lf",&x)!=EOF)
{
/* 已知一个小数。求其小数部分和整数部分
则用(int)求其整数部分,
然后本值再减去(int)求小数部分
*/
max=(int)x;
min=x-max;
//整数部分转换也要用数组,避免越界
if(max==0)
printf("0");
else
{
numz=1;
while(max)
{
zheng[numz]=max%2;
max/=2;
numz++;
}
for(i=numz-1;i>=1;i--)
printf("%d",zheng[i]);
}
/*
numz=1;
do
{
zheng[numz]=max%2;
max/=2;
numz++;
}while(max!=0);
//以后假设转换进制须要用数组存储。则用do-while
for(i=numz-1;i>=1;i--)
printf("%d",zheng[i]);
*/ numx=1;
while(numx<21&&min)
{
xiao[numx]=(int)(min*2);
//min=min*2-xiao[numx];
if(min*2>=1)
min=min*2-xiao[numx];
else
min*=2;
numx++;
}
for(i=numx-1;i>=1;i--)
if(xiao[i]!=0)
break;//注意i从numx-1開始
numx=i;
if(numx!=0)
printf(".");
//避免没小数可是输出 .
for(i=1;i<=numx;i++)
printf("%d",xiao[i]);
printf("\n");
}
return 0;
}

nyoj-647-奋斗小蜗牛在请客(进制转换)的更多相关文章

  1. EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】

    任意门:https://acm.ecnu.edu.cn/contest/140/problem/D/ D. 进制转换 单测试点时限: 2.0 秒 内存限制: 256 MB “他觉得一个人奋斗更轻松自在 ...

  2. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  3. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  5. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  6. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  7. JS 进制转换

    十进制转换成其他进制 objectname.toString([radix])   objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...

  8. php的进制转换

    学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...

  9. C++ 中数串互转、进制转换的类

    /******************************************************************** created: 2014/03/16 22:56 file ...

随机推荐

  1. BZOJ 4491 分块OR差分+线段树

    思路: (是不是只有我作大死写了个分块) up[i][j]表示从第i块开始到第j个位置 上升的最大值 down[i][j]同理 left_up[i]表示从第i块开始能够上升的最长长度 left_dow ...

  2. 使用数组实现ArrayList的效果

    package day04.d2.shuzu; /** * 通过数组实现类似于集合的功能 * 包含功能有: * * 动态添加元素 * 在指定位置添加元素 * * 删除指定下标的元素 * 删除指定内容的 ...

  3. java MD5加密的工具类

    import java.security.MessageDigest; /** * MD5加密工具类 * @author zwq */ public class MD5Util { /** * MD5 ...

  4. jQuery中样式和属性模块简单分析

    1.行内样式操作 目标:扩展框架实现行内样式的增删改查 1.1 创建 css 方法 目标:实现单个样式或者多个样式的操作 1.1.1 css方法 -获取样式 注意:使用 style 属性只能获取行内样 ...

  5. (转载) android studio library生成jar包和aar的方法总结

    android studio library生成jar包和aar的方法总结 标签: android学习文档jar和aar的使用与生成gradle 2016-11-25 10:39 1782人阅读 评论 ...

  6. Findbugs分析工具介绍

    Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.Findbugs自带检测器,其中有60余种Bad practice,80余种Correct ...

  7. 【从零开始】【Java】【1】Git和svn

    闲聊 干活快一年了吧,感觉工作中能干的事情也有一点了,但总有种不通透的感觉,查一个问题,能一路查出一堆不明白的东西. 之前新建过文档是记录点点滴滴的知识的,使用上没问题了,但原理什么的还是不懂,想了想 ...

  8. Java中成员变量和局部变量区别

    在类中的位置不同 重点 成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围不一样 重点 成员变量:类中 局部变量:方法中 初始化值的不同 重点 成员变量:有默认值 局部变量: ...

  9. 转载:移动端自适应:flexible.js可伸缩布局使用

    阿里团队开源的一个库.flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题. 实现方法: 通过JS来调整html的字体大小,而在页面中的制作稿则统一使用rem这 ...

  10. spring helloword

    控制反转: Inversion on Control , 控制反转 IOC 对象的创建交给外部容器完成,这个就做控制反转. 依赖注入,  dependency injection 处理对象的依赖关系 ...