进制转换 1000ms 262144K 描述: 将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。 输入: 多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。 输出: 多行。每行给出转换后的R进制数。
时间: 2023-05-27 12:06:55 浏览: 91
进制转换:输入一个十进制数n,把它转化为r进制数输出
#include <iostream>
#include <stack>
using namespace std;
char intToChar(int n) { // 将0~15转换为'0'~'F'
if (n < 10) return n + '0';
else return n - 10 + 'A';
}
int main() {
int T;
cin >> T;
while (T--) {
int N, R;
cin >> N >> R;
if (N < 0) { // 处理负数
cout << "-";
N = -N;
}
stack<char> s; // 用栈存储每一位的R进制数
while (N) { // 不停地除以R,将余数入栈
int remainder = N % R;
s.push(intToChar(remainder));
N /= R;
}
while (!s.empty()) { // 依次输出栈中元素
cout << s.top();
s.pop();
}
cout << endl;
}
return 0;
}
阅读全文