<center style="color:rgba(0,0,0,.870588);">
</center>
进制转换2
时间限制: 1 Sec 内存限制: 32 MB</center>
题目描述
将M进制的数X转换为N进制的数输出。
输入
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出
输出X的N进制表示的数。
样例输入
10 2
11
样例输出
1011
提示
注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
#include<stdio.h>
#include<string.h>
int main()
{
char a[1550],c[1550];
int data[1550];
int i,j,k,m,n,len,sum;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(a,0,sizeof(a));
scanf("%s",a);
len=strlen(a);
c[j=0]='0';
sum=1;
for(i=0;i<len;i++)
{
if(a[i]>='A'&&a[i]<='Z')
data[i]=a[i]-'A'+10;
else data[i]=a[i]-'0';
}
while(sum)
{
sum=0;
for(i=0;i<len;i++)
{
k=data[i]/n;
sum+=k;
if(i==len-1)
c[j++]="0123456789abcdefghijklmnopqrstuvwxyz"[data[i]%n];
else
data[i+1]+=data[i]%n*m;
data[i]=k;
}
}
if(!j)
j++;
for(i=j-1;i>=0;i--)
printf("%c",c[i]);
printf("\n");
}
return 0;
}