Konwersja między dowolnymi systemami (2..36)

Zadanie 10 z 17 · rozdział 16Trudność: 2 z 3konwersjabasestring

Treść zadania

Wczytaj zapis liczby naturalnej X w systemie o podstawie p oraz podstawę docelową q. Wypisz zapis tej samej liczby w systemie o podstawie q.

Dane wejściowe

  • 1. linia: X — zapis liczby w systemie o podstawie p (cyfry 0–9 i wielkie litery A–Z, gdzie A = 10, B = 11, …, Z = 35)
  • 2. linia: p — podstawa systemu, w którym zapisano X
  • 3. linia: q — podstawa systemu docelowego

Dane wyjściowe

Jedna linia: zapis liczby w systemie o podstawie q, bez zer wiodących (cyfry 0–9 i wielkie litery A–Z).

Ograniczenia

  • 2 ≤ p, q ≤ 36
  • X ma od 1 do 20 znaków, każda cyfra jest mniejsza od p; X może zaczynać się od zer

Uwagi

  • Najpierw zamień X na liczbę (przechodząc po cyfrach od lewej: wynik = wynik · p + cyfra), a potem zamień ją na system q (reszty z dzielenia przez q).
  • Spróbuj obejść się bez int(X, p) — zaimplementuj obie zamiany samodzielnie.
  • Liczba 0 w każdym systemie to 0.

Przykład

Wejście
4301
10
4
Wyjście
1003031

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 16

Zadania w tym rozdziale ćwiczą zamianę liczb między systemami liczbowymi oraz operatory bitowe: & (AND), | (OR), ^ (XOR), ~ (NOT) i przesunięcia <<, >>.
Każde zadanie (oraz każdy podpunkt w zadaniach wieloczęściowych) jest osobnym, niezależnym programem: czyta standardowe wejście (stdin) i wypisuje wynik na standardowe wyjście (stdout).

Konwencje wspólne:

  • Każda liczba na wejściu jest w osobnej linii, w kolejności podanej w sekcji Wejście.
  • Liczby na wejściu są nieujemne (0 jest dozwolone), chyba że zadanie wprost mówi inaczej.
  • Zapis binarny wypisuj jako ciąg znaków 0 i 1 **bez spacji, bez prefiksu 0b i bez zer wiodących**; zapis binarny liczby 0 to 0.
  • Dla systemów o podstawie większej niż 10 używaj cyfr 0–9 oraz wielkich liter A–Z.
  • Jeśli zadanie mówi „nie wypisuj nic” — program nie wypisuje nawet pustej linii.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
1A
16
10
Oczekiwane wyjście
26

Test 2

Nie uruchomiono
Wejście
1011
2
16
Oczekiwane wyjście
B

Test 3

Nie uruchomiono
Wejście
0
10
2
Oczekiwane wyjście
0

Test 4

Nie uruchomiono
Wejście
ZZ
36
10
Oczekiwane wyjście
1295

Test 5

Nie uruchomiono
Wejście
255
10
16
Oczekiwane wyjście
FF

Test 6

Nie uruchomiono
Wejście
777
8
2
Oczekiwane wyjście
111111111

Test 7

Nie uruchomiono
Wejście
123
10
36
Oczekiwane wyjście
3F

Test 8

Nie uruchomiono
Wejście
00FF
16
2
Oczekiwane wyjście
11111111

Test 9

Nie uruchomiono
Wejście
1003031
4
10
Oczekiwane wyjście
4301
Uruchom z własnymi danymi