zoukankan      html  css  js  c++  java
  • 【学习笔记】〖九度OJ〗题目1138:进制转换

    题目1138:进制转换

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:1002

    解决:421

    题目描述:

    将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

    输入:

    多组数据,每行为一个长度不超过30位的十进制非负整数。
    (注意是10进制数字的个数可能有30个,而非30bits的整数)

    输出:

    每行输出对应的二进制数。

    样例输入:
    0
    1
    3
    8
    样例输出:
    0
    1
    11
    1000
    来源:
    2008年北京大学软件所计算机研究生机试真题
    答疑:
    解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7861-1-1.html
    本题模拟手算进行大数除法,对大整数进行除二操作,将除法过程单独写为函数能让程序思路更清晰。


    #include<iostream>
    using namespace std;
     
    char src[200]={0};
    int srci[200] = {0};
    char res[200]={0};
     
     
    int devide(int len)
    {
        int carry = 0;
        for (int i=0; i<len; i++)
        {
            int num = (carry*10 + srci[i]) / 2;
            carry = srci[i] % 2;
            srci[i] = num;
        }
        return carry;
    }
     
    //判断srci是否为0
    bool isZero(int len)
    {
        for (int i=len-1; i>=0; i--)
        {
            if (srci[i] != 0)
            {
                return false;
            }
        }
        return true;
    }
     
    int main()
    {
         
        while (cin >> src)
        {
            int len=0, i=0, j=0;
            while (src[len]!='')
            {
                srci[len] = src[len] - '0';
                len++;
            }
     
            int resl = 0;
            do
            {
                res[resl++] = devide(len) + '0';
            }while (!isZero(len));
     
            for (i=resl-1; i>=0; i--)
            {
                cout << res[i];
            }
            cout << endl;
        }
        return 0;
    }



  • 相关阅读:
    简单复利计算java板
    弹出提示框的方式——java
    实验一 命令解释程序
    简单复利计算c语言实现
    操作系统
    jsp 页面和 jsp标记
    对it行业的一些看法
    又穷自动机的构造
    复利计算——结对编程2.0
    汉堡包
  • 原文地址:https://www.cnblogs.com/ymjia/p/3590299.html
Copyright © 2011-2022 走看看