有多组测试用例,
输入一段字符s,n,k; n表示字符s是n进制的数,k表示要转换为k进制的数;
例:
3 10 2
7
15 10 16
F
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char a[30],c[30];
int b[30];
int n,m,i,j,k;
while(scanf("%s%d%d",a,&n,&m)!=EOF)
{
memset(c,0,sizeof(c));
memset(b,0,sizeof(b));
int l=strlen(a),sum=0;
for(i=0;i<l;i++)
{
if(a[i]<='9')
b[i]=a[i]-'0';
else
b[i]=a[i]-'A'+10;
sum*=n;
sum+=b[i];
}
j=0;
if(sum==0)
printf("0\n");
else
{
while(sum!=0)
{
int t=sum%m;
sum/=m;
if(t<=9)
c[j++]=t+'0';
else
c[j++]=t+'A'-10;
}
int ll=strlen(c);
for(i=ll-1;i>=0;i--)
printf("%c",c[i]);
printf("\n");
}
}
}
输入两个数,n,k; n (0 <= n <=10^9) and k (2 <= k <= 36)
要求把十进制数n,转化为k进制数。
Sample Input
3 2
4 3
15 16
Sample Output
11
11
F
就是把上面的程序改改
#include<stdio.h>
#include<string.h>
#include<math.h>
char c[1000000];
int main()
{
int m,i,j,k,sum;
while(scanf("%d%d",&sum,&m)!=EOF)
{
memset(c,0,sizeof(c));
if(sum==0)
printf("0\n");
else
{
j=0;
while(sum!=0)
{
int t=sum%m;
sum/=m;
if(t<=9)
c[j++]=t+'0';
else
c[j++]=t+'A'-10;
}
for(i=j-1;i>=0;i--)
printf("%c",c[i]);
printf("\n");
}
}
}