题目链接:https://vjudge.net/problem/HDU-1335
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std ;
const int MAXN = 100 ;
int array [MAXN];
int len;
int toDec(const char *p, int frombase)
{
int ans = 0 ;
while (*p)
{
ans *= frombase;
if (isdigit (*p)) ans += *p - '0' ;
if (isalpha (*p)) ans += *p - 'A' + 10 ;
p++;
}
return ans;
}
void toAny(int t, int tobase)
{
int count = 0 ;
while (t) {
int val = t % tobase;
if (0 <= val && val <= 9 )
array [count] = val + '0' ;
else if (10 <= val && val <= 15 )
array [count] = val - 10 + 'A' ;
t /= tobase;
count++;
}
if (count == 0 )
printf (" 0\n" );
else if (count > 7 )
printf (" ERROR\n" );
else {
int i;
for (i=count; i<7 ; i++)
array [i] = ' ' ;
for (i=6 ; i>=0 ; i--)
putchar (array [i]);
putchar ('\n' );
}
}
int main()
{
char key[1024 ];
int frombase, tobase;
while (scanf ("%s%d%d" , key, &frombase, &tobase) != EOF)
{
toAny(toDec(key, frombase), tobase);
}
return 0 ;
}