Dzielenie całkowite bitowe
Treść zadania
Wczytaj dwie liczby naturalne a i b. Oblicz iloraz całkowity $\lfloor a / b \rfloor$ (w Pythonie a // b), używając wyłącznie operatorów bitowych i przesunięć.
Dane wejściowe
- 1. linia:
a - 2. linia:
b
Dane wyjściowe
Jedna liczba naturalna: iloraz całkowity a przez b.
Ograniczenia
- $0 \le a \le 10^9$
- $1 \le b \le 10^9$ (dzielenie przez zero nie występuje)
Uwagi
- Do obliczenia wyniku nie używaj
+,-,*,/,//,%— tylko&,|,^,~,<<,>>i porównań. - Postępuj jak w dzieleniu pisemnym: znajdź największe
b << knie większe oda, a potem dla kolejnychk(malejąco) odejmujb << koda, jeśli się mieści, i ustawiaj bitkilorazu. Odejmowanie wykonaj bitowo, tak jak w ZAD-03B.
Przykład
9 3
3
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 (
0jest dozwolone), chyba że zadanie wprost mówi inaczej. - Zapis binarny wypisuj jako ciąg znaków
0i1**bez spacji, bez prefiksu0bi bez zer wiodących**; zapis binarny liczby0to0. - Dla systemów o podstawie większej niż 10 używaj cyfr
0–9oraz wielkich literA–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.
Przywrócono Twój zapisany kod.
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 uruchomiono17 3
5
Test 2
Nie uruchomiono100 10
10
Test 3
Nie uruchomiono0 5
0
Test 4
Nie uruchomiono3 7
0
Test 5
Nie uruchomiono7 7
1
Test 6
Nie uruchomiono1000 1
1000
Test 7
Nie uruchomiono1000000000 3
333333333