zoukankan      html  css  js  c++  java
  • POJ NOI0113-01 数制转换(PKU2710)

    问题链接POJ NOI0113-01 数制转换

    原题出处PKU2710 数制转换



    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述

    求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
    不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

    输入
    输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。
    a,b是十进制整数,2 =< a,b <= 16。
    输出
    输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。
    样例输入
    15 Aab3 7
    样例输出
    210306
    来源
    2005~2006医学部计算概论期末考试



    问题分析

      这是一个进制转换的问题。

      据说阿拉伯数字是印度人发明的。今天,采用阿拉伯数字的记数法被人们普遍采用。而且人们使用的是10进制。

      然而,与计算机有关的常用的进制有10进制、8进制和16进制。

    程序说明

      程序中,函数convert()用于将数s从a进制转换为b进制。




    AC的C++语言程序:

    #include <iostream>
    #include <string>
    #include <ctype.h>
    
    using namespace std;
    
    string convert(int a, string& s, int b)
    {
        long val, dcount, digit;
        char result[72], c;
        string ans;
    
        val = 0;
        for(int i=0; i<(int)s.size(); i++) {
            if(isdigit(s[i]))
                val = val * a + s[i] - '0';
            else
                val = val * a + toupper(s[i]) - 'A' + 10;
        }
    
        dcount = 0;
        while(val) {
            digit = val % b;
            val /= b;
    
            result[dcount++] = ((digit >= 10) ? 'A' - 10 : '0') + digit;
        }
        if(dcount == 0) {
            result[dcount++] = '0';
            result[dcount] = '';
        } else
            result[dcount] = '';
    
        // reverse
        for(int i=0, j=dcount-1; i<j; i++, j--) {
            c = result[i];
            result[i] = result[j];
            result[j] = c;
        }
    
        ans = result;
    
        return ans;
    }
    
    int main()
    {
        int a, b;
        string s;
    
        cin >> a >> s >> b;
    
        cout << convert(a, s, b) << endl;
    
        return 0;
    }



  • 相关阅读:
    【转】如何高效地阅读技术类书籍与博客
    测试站点大全
    【转】软件测试面试- 购物车功能测试用例设计
    div+css 定位浅析
    C# Enum,Int,String的互相转换
    sqlserver 空间数据类型
    系统学习sqlserver2012 一
    sql查询数据库中所有表的记录条数,以及占用磁盘空间大小。
    linux网站推荐
    匿名用户访问sharepoint2010中的列表
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563942.html
Copyright © 2011-2022 走看看