#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
void change(int base1,int base2,char str[],char result[]);
int leap;
int main()
{
int n;
while(1==scanf("%d",&n))
{
int num=0;
for(num=0;num<n;num++)
{
leap=0;
int base1,base2,length,i,sign;
char str[1000],result[1000];
scanf("%d%d%s",&base1,&base2,str);
printf("%d %s\n",base1,str);
printf("%d ",base2);
length=strlen(str);
int kkkk=0;
for(i=0;i<length;i++)
{
if(str>='A'&&str<='Z')
str-=7;
else if(str>='a')
str-=13;
if(str=='0')
kkkk++;
}
if(kkkk==length||(length==1&&str[0]==0))
{
printf("0\n\n");
continue;
}
change(base1,base2,str,result);
length=strlen(result);
for(i=0;i<length;i++)
{
if(result-'0'>=10&&result-'0'<=35)
result+=7;
else if(result-'0'>=36)
result+=13;
}
reverse(&result[0],&result[length]);
if(!leap)
{
for(i=0;i<length;i++)
if(result!='0')
{
sign=i;
break;
}
for(i=sign;i<length;i++)
printf("%c",result);
printf("\n");
}
printf("\n");
}
}
return 0;
}
void change(int base1,int base2,char str[],char result[])
{
int temp,i,length,k=0;
char quetient[1000];
length=strlen(str);
i=0;
while(i<length)
{
temp=0;
for(i=0;i<length;i++)
{
temp=temp*base1+str-'0';
quetient=temp/base2+'0';
temp%=base2;
}
quetient='\0';
result[k++]=temp+'0';
for(i=0;i<length;i++)
str=quetient;
for(i=0;i<length;i++)
{
if(quetient!='0')
break;
}
}
result[k]='\0';
return;
}
大数进制转换
基数转换程序解析
最新推荐文章于 2022-02-02 15:52:27 发布
1338

被折叠的 条评论
为什么被折叠?



