文章

19

粉丝

69

获赞

30

访问

18.1k

头像
通用进制转换模板(注意只有部分测试集通过情况)
P1422 清华大学/厦门大学机试题
发布于2023年8月5日 11:38
阅读数 1.0k

由题意知不需要考虑大数,无需使用字符串存储数据。具体思路:将m进制转换为10进制,再将10进制转化为n进制。

但仍有两个注意事项,注意即可避免出现测试集不能全部通过情况:

  1. 在转换为十进制存储时使用long long类型
  2. 输出时若有字符则为小写

参考代码如下:

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int m, n;
    cin >> m >> n; // m为初始进制,n为输出进制
    string s; // m进制数
    cin >> s;
    long long decimal = 0;
    for (auto it = s.begin(); it != s.end(); it++)
    {
        if (*it >= 'A')
        {
            decimal = decimal * m + (*it - 'A' + 10);
        }
        else
        {
            decimal = decimal * m + (*it - '0');
        }
    }
    vector<char> newbase;
    while (decimal != 0)
    {
        int remainder = decimal % n;
        if (remainder >= 10)
        {
            newbase.push_back('a' + remainder - 10);
        }
        else
        {
            newbase.push_back('0' + remainder);
        }
        decimal /= n;
    }
    for (auto it = newbase.rbegin(); it != newbase.r...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发