zoukankan      html  css  js  c++  java
  • P1143 进制转换

    题目传送门

    C++代码

    #include <bits/stdc++.h>
    
    using namespace std;
    
    //单个字母转换成数字 0-F
    int char_to_int(char a) {
        return '0' <= a && a <= '9' ? a - '0' : 10 + a - 'A';
    }
    
    //0-15之间的数字转为16进制的数字
    char int_to_char(int a) {
        return a <= 9 ? '0' + a : a - 10 + 'A';
    }
    
    int n;          //原始的n进制
    int m;          //要转换成的m进制
    string input;   //输入的原始数字
    
    int d;          //原始数转为十进制的数字是多少,这是一个中间过程
    vector<int> output; //用一个数字数组
    
    /**
     * 测试用例:
     16  FF  2
     答案: 11111111
    
     测试用例2:
     15 5CBD1460 2
     答案:
     111011100110101100100111110110
     */
    int main() {
        //题意:将输入的n进制数input转为m进制
        cin >> n >> input >> m;
    
        //原数转换为十进制,从左向右噢
        for (int i = 0; i < input.size(); i++)//遍历输入字符串的每一位,一边转每一位是十进制,一边乘n,累加,得到换算后的十进制数。
            d = d * n + char_to_int(input[i]);//秦九韶算法,就是迭代方式提高效率
    
        //输出测试一下:255
        //cout << d << endl;
    
        //将十进制数转换为m进制数的每一位是多少
        while (d) output.push_back(d % m), d /= m;//一路取余保存,得到一个反向的数字序列。学习这种静态数组+idx的用法,很好用,速度快。
    
        //转换好的数字,按m进制数的标准样式输出
        for (int i = output.size() - 1; i >= 0; i--) cout << int_to_char(output[i]);
        return 0;
    }
    
  • 相关阅读:
    Eclipse中显示行号
    PeerSim中一些自己的理解
    迄今为止看过的书籍
    Java程序跨平台运行
    Linux下在PeerSim中运行Chord源代码
    在Eclipse中运行PeerSim的例子
    Ubuntu下安装Java
    Eclipse中自动调整代码
    Eclipse中Outline里各种图标的含义
    Java是如何运行的
  • 原文地址:https://www.cnblogs.com/littlehb/p/15152191.html
Copyright © 2011-2022 走看看