`
jaychang
  • 浏览: 717579 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

大数进制转换

阅读更多
#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;
} 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics