Code: Select all
/* @JUDGE_ID:XXXXXX 389 C++ */
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char str[100];
long from,to;
long num;
long power(long b,long n)
{
long i,p=1;
for(i=0;i<n;i++)
p=p*b;
return p;
}
void str_rev(char *s)
{
long i,j;
j=strlen(s)-1;
for(i=0;i<j;i++,j--)
{
s[i]=s[i]^s[j];
s[j]=s[i]^s[j];
s[i]=s[i]^s[j];
}
}
void todecimal()
{
long i,j;
long l=strlen(str);
num=0;
for(i=l-1,j=0;i>=0;i--,j++)
{
if(isdigit(str[i]))
num=num+(long)((str[i]-'0')*power(from,j));
else if(str[i]>='A' && str[i]<='F')
num=num+(long)((str[i]-'A'+10)*power(from,j));
}
}
void tobase()
{
char s[100];
long i=0;
long d;
do
{
d=num%to;
if(d>=10)
{
s[i]=(d-10)+'A';
}
else
{
s[i]=d+'0';
}
num/=to;
i++;
}
while(num);
s[i]='\0';
str_rev(s);
if(strlen(s)<=7)
printf("%7s\n",s);
else
printf("%7s\n","ERROR");
}
void main()
{
while(3==scanf("%s%ld%ld",str,&from,&to))
{
if(from==to)
{
printf("%7s\n",str);
}
else
{
todecimal();
tobase();
}
}
}
/* @END_OF_SOURCE_CODE */
![:(](./images/smilies/icon_frown.gif)