【noj】1012 进制转换(包括非正数)

来源:互联网 发布:采购流程优化四手法 编辑:程序博客网 时间:2024/05/27 19:26

题目描述

将一个十进制数N转换成R进制数输出,2≤R≤16,R≠10。

输入

多行。第一行指出以下一共有多少组数据,后续每行包含两个整数N和R,以空格分隔,-100000≤N≤100000,2≤R≤16,R≠10。

输出

多行。每行给出转换后的R进制数。

样例输入

3
7 2
23 12
-4 3

样例输出

111
1B
-11

A :

#include<iostream>using namespace std;int main() {    int T;    cin >> T;    char a[55];    char R[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',        'A', 'B', 'C', 'D', 'E', 'F'};    while (T--) {        int n, r;        cin >> n >> r;        if (n < 0) {            cout << "-";    // 对于负数,先输出负号,然后按正数处理            n = -n;        }        if (n == 0) {            cout << 0;  // 0转换为任意进制仍为0        }        int cnt = 0;        while (n){            a[cnt++] = R[n%r];            n /= r;        }        for (int i = cnt-1; i >= 0 ; --i) {            cout << a[i];        }        cout << endl;    }    return 0;}

也可以用itoa函数 itoa (n, res ,r)将十进制转换成任意进制,然后再转换成大写

阅读全文
0 0
原创粉丝点击