新手勿喷,看搜不到这题,就想发表一下自己拙劣的代码供大家参考;
小斌学长已经很熟悉二进制了,比如十进制10换算成二进制为1010(1*2^3+0*2^2+1*2^1+0*2^0)
但是他最喜欢的数是17,请你帮帮他把当前进制数转换成十七进制的数
(英文字母A,B,C,D,E,F,G分别表示数字10~16)
输入格式:
第一行输入一个数T代表T组测试样例(0<T<=500)
接下来每组
第一行输入一个数k表示当前数的进制(1<k<=22)
第二行输入当前数n(n确保为合法数,注意n的位数不超过10)
输出格式:
对每一组输入,输出一个十七进制的数
输入样例:
2
10
27
2
100
输出样例:
在这里给出相应的输出。例如:
1A
4
代码长度限制
16 KB
时间限制
500 ms
内存限制
#include<stdio.h>
int main()
{
int t,k,x,j,len;
long sum=0;
char n[100],num[100];
scanf("%d",&t);
for(int i=0;i<t;i++)
{
len=0;
scanf("%d\n",&k);
//scanf("\n");
scanf("%s",&n);
sum=0;
for( j=0;n[j]!='\0';j++)
{
if(n[j]>='A')//&&n[j]<=k-10+'A')
sum=sum*k+(n[j]-'A'+10);
else
sum=sum*k+(n[j]-'0');
}//转换为10进制;
long sum1=sum;
if(sum==0)
{
printf("0");
}
while(sum1!=0)
{
x=sum1%17;
if(x<=9)
num[len++]=x+'0';
else
num[len++]=x-10+'A';
sum1/=17;
}
for(int e=len-1;e>=0;e--)
{
printf("%c",num[e]);
}
printf("\n");
}//逆序输出转化后的值
return 0;
}