#include using namespace std; string odwroc_kolejnosc(string tekst) { string wynik = ""; for(int i = tekst.size() - 1; i >= 0; --i) wynik += tekst[i]; return wynik; } string konwersja_int_string(int liczba) { string wynik = ""; int cyfra; while(liczba > 0) { cyfra = liczba % 10; liczba = (liczba - cyfra) / 10; wynik += (cyfra + '0'); } return odwroc_kolejnosc(wynik); } int potega(int a, int n) // funkcja zwracajaca wynik a^n { int wynik = 1; for(int i = 1; i <= n; ++i) wynik *= a; return wynik; } string decode(string liczba, int system) { liczba = odwroc_kolejnosc(liczba); int suma = 0; unsigned rozmiar = liczba.size(); int cyfra; for(unsigned i = 0; i < rozmiar; ++i) { if(liczba[i] >= 'A' && liczba[i] <= 'F') cyfra = liczba[i] - 65; else cyfra = liczba[i] - 48; suma += (cyfra * potega(system, i)); } return konwersja_int_string(suma); } string code(int liczba, int system) { string wynik = ""; int cyfra; while(liczba > 0) { cyfra = liczba % system; liczba = (liczba - cyfra) / system; if(cyfra > 9) wynik += (static_cast(cyfra + 55)); else wynik += (static_cast(cyfra + 48)); } return odwroc_kolejnosc(wynik); } int main() { int n; // liczba operacji cin >> n; string wyniki[n]; string komenda, ciag_znakow; int liczba, system; for(int i = 0; i < n; ++i) { cin >> komenda; if(komenda == "code") { // kodowanie na system (np. dwójkowy) cin >> liczba >> system; wyniki[i] = code(liczba, system); } else { // dekodowanie na system dziesietny cin >> ciag_znakow >> system; wyniki[i] = decode(ciag_znakow, system); } } for(int i = 0; i < n; ++i) cout << wyniki[i] << endl; return 0; }