// sample input / output is ok.
#include <iostream>
#include <cstdio>
#include <cstring>
long long int pow(int base, int power);
long long int ConvertAnyNumberToDecimalNumber(char const *s, int base);
void convertDecimalNumberToAnyNumber(long long int decimalNumber, int base);
int main()
{
char firstNumber[50];
int firstBaseNumber, secondBaseNumber;
long long int decimalNumber;
// freopen("input.txt", "r+", stdin);
while(std::cin >> firstNumber >> firstBaseNumber >> secondBaseNumber) {
decimalNumber = ConvertAnyNumberToDecimalNumber(firstNumber, firstBaseNumber);
convertDecimalNumberToAnyNumber(decimalNumber, secondBaseNumber);
}
return 0;
}
long long int pow(int base, int power)
{
long long int ans = 1;
for(int i = 1; i <= power; i++) {
ans *= base;
}
return ans;
}
long long int ConvertAnyNumberToDecimalNumber(char const *s, int base)
{
int i, len, n;
long long int decimal;
decimal = 0;
len = strlen(s);
for(i = 0; i < len; i++) {
if(s[i] == 'A')
n = 10;
else if(s[i] == 'B')
n = 11;
else if(s[i] == 'C')
n = 12;
else if(s[i] == 'D')
n = 13;
else if(s[i] == 'E')
n = 14;
else if(s[i] == 'F')
n = 15;
else
n = s[i] - '0';
decimal += pow(base, len-i - 1) * n;
}
return decimal;
}
void convertDecimalNumberToAnyNumber(long long int decimalNumber, int base)
{
char OurNumber[50];
int i, n;
i = 0;
while(decimalNumber != 0)
{
n = decimalNumber % base;
switch(n)
{
case 10: OurNumber[i] = 'A';
break;
case 11: OurNumber[i] = 'B';
break;
case 12: OurNumber[i] = 'C';
break;
case 13: OurNumber[i] = 'D';
break;
case 14: OurNumber[i] = 'E';
break;
case 15: OurNumber[i] = 'F';
break;
default :
OurNumber[i] = n + '0';
break;
}
i++;
decimalNumber = decimalNumber / base;
}
int j = i - 1;
if(j > 7) {
printf(" ERROR");
}
else {
int space = 7 - j;
for(int i = 0; i < space; i++) {
printf(" ");
}
for(; j >= 0; j--) {
printf("%c", OurNumber[j]);
}
}
printf("\n");
}
Enter code here...