进制转换2 (清华大学考研机试)
【摘要】
文章目录
题目AC代码
题目
本题链接:进制转换2
本博客给出本题截图:
AC代码
代码解释:其实就是涉及到高精度的进制转换问题,高精度讲解详见:高精度运算,高精度模板见:高精...
题目
本题链接:进制转换2
本博客给出本题截图:
AC代码
代码解释:其实就是涉及到高精度的进制转换问题,高精度讲解详见:高精度运算,高精度模板见:高精度算法模板,本题和进制转换这道题并没有很大的区别,唯一区别的地方就是本题是直接由 m 进制转换为 n 进制,我们当然可以考虑成由 m 进制先转换为 10 进制,进而由 10 进制转换为 n 进制,但是这么去实现的话,我们需要做高精度加法,高精度乘法,高精度除法,这样显然是很复杂的,我们也可以直接把 m 进制转换为 n 进制,详细操作见代码部分,建议手动模拟
代码:
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
int m, n;
string x;
cin >> m >> n >> x;
vector<int> A;
for (int i = 0; i < x.size(); i ++ )
{
char c = x[x.size() - 1 - i];
if (c >= 'A') A.push_back(c - 'A' + 10);
else A.push_back(c - '0');
}
string res;
while (A.size())
{
int r = 0;
for (int i = A.size() - 1; i >= 0; i -- )
{
A[i] += r * m;
r = A[i] % n;
A[i] /= n;
}
while (A.size() && A.back() == 0) A.pop_back();
if (r >= 10) res += r - 10 + 'a';
else res += to_string(r);
}
reverse(res.begin(), res.end());
cout << res << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
文章来源: chen-ac.blog.csdn.net,作者:辰chen,版权归原作者所有,如需转载,请联系作者。
原文链接:chen-ac.blog.csdn.net/article/details/120965804
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)