Zadanie z rotacji bitowej

0

Napisz program, który dla różnych par wartości N i P wykonuje rotację i oblicza powstałą liczbę.
Dane wejściowe
Pierwszy wiersz danych zawiera liczbę całkowitą Z oznaczającą ilość par liczb do wczytania (1 ≤ Z ≤ 1000). Każdy z kolejnych Z wierszy zawiera dwie liczby N i P (2 ≤ N ≤ 2000000000, 1 ≤ P ≤ 1000), oddzielone pojedynczym odstępem.
Wynik programu
Program powinien dla każdej wczytanej pary wypisać wiersz tekstu zawierający uzyskaną liczbę w postaci dziesiętnej.
Przykładowy rezultat

Dla danych wejściowych:
3
19 2
19 3
19 4

program powinien wypisać:
28
14
7
Zadaną liczbę naturalną N zamieniamy na postać dwójkową i wpisujemy jej cyfry na obwodzie koła (zgodnie z ruchem wskazówek zegara, pierwsza cyfra na górze). Dla przykładu weźmy liczbę 19 (dwójkowo: 10011).
Teraz obracamy koło zgodnie z ruchem wskazówek zegara o wybrana ilość pozycji (P) i odczytujemy powstałą liczbę (począwszy od pierwszej cyfry na górze koła). Na przykład dla P = 2 otrzymujemy:
liczbę dwójkową 11100, czyli 28 dziesiętnie.

0

wykonuje rotację

Jaką rotację? Jak ona jest zdefiniowana?

0

Jak masz 10011 powiedzmy w tablicy o indeksach od 0 do 4

10011 [0][1][2][3][4] -> [(0) 1][(1) 0][(2) 0][(3) 1][(4) 1]

no to rotacja o 2 oznacza, że musisz się cofać cyklicznie o 2 miejsca, czyli początek był przy indeksie 0 to teraz jest przy 3. Nowa liczba będzie się składała z wartości w tych indeksach

[3][4][0][1][2] -> 11100

1 użytkowników online, w tym zalogowanych: 0, gości: 1