您的位置:首页 > 其它

AP协会训练第二周:进制转换

2019-02-03 15:51 97 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43279710/article/details/86759721

题目要求

输入一个十进制数N,将它转换成R进制数输出。

输入

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

输出

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

IO 实例

输入:74921 16
输出:124A9
输入:167480 9
输出:274658
输入:-2437443 11
输出:-1415318
输入:-2325324 15
输出:-30DEB9
输入:143 16
输出:8F
输入:^z(ctrl+z)
输出:Process finished with exit code 0

AC 代码

#include <iostream>
#include <iomanip>
#include <cmath>

using namespace std;

char ch[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

string iop(int m, int n) {
char s[1000] = {0};
char ans[1000] = {0};
int flag = 0;
int i = 0, j = 0;
if (m < 0) {
m = -m;
flag = 1;
};
while (1) {
s[i++] = ch[m % n];
m /= n;
if (m == 0) {
break;
}
}
i--;
if (flag) {
ans[j++] = '-';
}
while (i >= 0) {
ans[j++] = s[i--];
}
return ans;
}

int main() {
int m, n;
while (cin >> m >> n) {
cout << iop(m, n) << endl<
3ff7
span class="token punctuation">;
}
return 0;
}

后话

为啥记这一个题呢,因为我发现string类型的函数返回值居然可以是char字符串?!有点东西。还有就是怕忘了咋做,留着以后看好了。
水题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: