进制转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 56916 Accepted Submission(s): 31010
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input
7 2 23 12 -4 3
Sample Output
111 1B -11
水题,利用
while (a != 0)
{
t = a%m;
a /= m;
if (t < 0)
t *= -1;
an[i] = t;
i++;
}
求出一位位的数
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
#include<string.h>
const int Max = 64000000;
const int mod = 1000;
int main()
{
int n, m;
int a, b;
int an[50];
int i, j, k, l;
int t;
while (scanf("%d %d", &n, &m) != EOF)
{
a = n;
i = 0;
while (a != 0)
{
t = a%m;
a /= m;
if (t < 0)
t *= -1;
an[i] = t;
i++;
}
if (n < 0)
cout << "-";
if (n != 0)
{
for (j = i - 1; j >= 0; j--)
{
if (an[j] < 10)
cout << an[j];
else
cout << char(an[j] - 10 + 'A');
}
cout << endl;
}
else
cout << "0\n";
}
return 0;
}