时间限制1.00s 内存限制128.00MB 难易度:普及−
【题目描述】
给定一个十进制整数 n 和一个小整数 x。将整数 n 转为 x 进制。对于超过十进制的数码,用 A
,B
... 表示。
【输入格式】
第一行一个整数 n;
第二行一个整数 x。
【输出格式】
输出仅包含一个整数,表示答案。
【输入输出样例】
输入 #1
1000 2
输出 #1
1111101000
【说明/提示】
【数据规模和约定】
保证 n 不超过 10^9,x 不超过 36。
【算法分析】
将十进制整数转换成x进制的数,算法是:除以x取余,再将余数倒过来写出,即是x进制的数。
因为规定x不超过36,所以用字母表示超过十进制的数码总共需要36-10=26个字母,即需要用到全部的英文字母。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
char ch[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; //26个字母表示超过十进制的数码。
void TurnData(int n,int a)
{
int x[17],i,j,k=0;
if(n<0) cout<<'-'; //负数的话,先输出负号再开始转。
j=abs(n);
do{
k++; //用于统计转成a进制数后的总位数。
i=j%a;
j/=a;
x[k]=i;
}while(j!=0);
for(int h=k;h>=1;h--)
if(x[h]<10) cout<<x[h];
else cout<<ch[x[h]-10];
cout<<endl;
}
int main()
{
int n,x;
cin>>n>>x;
TurnData(n,x); //转成x进制数。
return 0;
}