#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; }
大数进制转换
最新推荐文章于 2015-12-05 16:14:01 发布