1258: 【基础】任意进制转换
时间限制: 1 Sec 内存限制: 16 MB
提交: 2460 解决: 1588
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
将十进制整数n转换成b进制。
输入
一行,两个整数 n b ( 1 <= n <= 32767, 2 <= b <= 20 )。
输出
一行,为n转换成b进制后的数。
样例输入
示例1:
19 8
示例2:
1229 16
样例输出
示例1:
23
示例2:
4CD
提示
可以定义一个const: const r:array[0..19] of char=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J');
题解如下
#include<stdio.h>
#include<string.h>
int main()
{
int n,b;
scanf("%d%d",&n,&b);
char ar[20];
for(int i=0;i<20;i++)
{
if(i<=9)
ar[i]=i+'0';
else
ar[i]=i+55;
}
char result[999];
int count_zero=0;
int position=0;
if(n==0)
{
//printf("0");
result[position++]='0';
}
else
{
for(int i=0; ;i++)
{
if(n%b==0)
{
count_zero++;
n/=b;
}
else
break;
}
for(int j=0; ;j++)
{
if(n/b!=0)
{
result[position++]=ar[n%b];
n/=b;
}
else
{
result[position++]=ar[n];
break;
}
}
for(int i=0;i<count_zero;i++)
result[position++]='0';
}
int LEN_re=(int)strlen(result);
for(int i=LEN_re-1;i>=0;i--)
printf("%c",result[i]);
return 0;
}