/*
输入一个十进制数 N ,将它转换成 R 进制数输出。
输入格式
输入一个正整数T。表示测试数据的组数。
每个测试实例包含两个整数 N(32 位整数) 和 R( 2 <= R <= 36).
输出格式
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用 A 表示 , 用 G 表示等等)。
*/

#include<iostream>
#include<string>
using namespace std;
char toput[1000] = {0};
long long to_trans[33] = {0};//你需要转化的数据
int base[33] = {0};//进制
string Alpha = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//十一进制转化
int main()
{
int total, num, order;
cin >> total;
for(int i = 0; i < total; i++)
{
cin>>num;
to_trans[i] = num;
cin>>order;
base[i] = order;
}
//for(int i = 0; i < total; i++){cout << to_trans[i] << " " << base[i]<<endl;}
for(int i = 0; i < total; i++)
{
int length = 0;//转化之后的长度
int nega = 0;
if(to_trans[i] < 0)
{
nega = 1;
to_trans[i] = 0 - to_trans[i];
}
while(to_trans[i])
{
int each_num = to_trans[i] % base[i];
to_trans[i] /= base[i];
toput[length++] = each_num;
}
if (nega)
{
cout << "-";
}
for(int j = length - 1; j >= 0; j--)
{
printf("%c",Alpha[toput[j]]) ;
}
cout << endl;
}
return 0;
}
本文介绍了一个算法,该算法能够将十进制数转换为2到36之间的任意R进制数,并详细展示了如何通过编程实现这一转换过程。对于大于10的进制,采用16进制的标准来表示10以上的数字。
1561





