2026/27, 10В, Python: Системы счисления (часть1)

A: Шестнадцатеричную цифру в int

Дана шестнадцатеричная цифра, записанная в переменной типа char. Определите её числовое значение.

Решение оформите в виде функции int hex2int(char c). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
hex2int('9')
9
hex2int('F')
15

B: int в шестнадцатеричную цифру

Дано значение типа int от 0 до 15. Запишите его виде 16-ричной цифры.

Решение оформите в виде функции char int2hex(int n). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
int2hex(9)
'9'
int2hex(15)
'F'

C: Из двоичной в int

Дано число, записанное в виде строки в двоичной системе счисления. Переведите его в тип int.

Решение оформите в виде функции int bin2int(string s). Сдайте на проверку только тело функции.

Решение должно использовать схему Горнера (в частности, в решении не должны вычисляться степени числа 2). Все символы строки должны обрабатываться внутри общего цикла, от старшего разряда к младшему.

Вызов функции Возвращаемое значение
bin2int("10110011"s)
179

D: Из шестнадцатеричной в int

Переведите значение из 16-ричной системы счисления в тип int. Решение оформите в виде функции int hex2int(string s). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
hex2int("B3"s)
179

E: Из int в двоичную

Переведите число из int в строку в двоичной системе счисления.

Решение оформите в виде функции string int2bin(int n). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
int2bin(179)
"10110011"s

F: Из int в шестнадцатеричную

Переведите число из int в строку в шестнадцатеричной системе счисления.

Решение оформите в виде функции string int2hex(int n). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
int2hex(179)
"B3"s

G: Из любой в любую

Напишите программу, переводящую запись числа между двумя произвольными системами счисления.

На вход программа получает три величины: \(n\), \(a\), \(k\), где \(n\) и \(k\) — натуральные числа от 2 до 36, основания систем счисления, \(a\) — число, записанное в в системе счисления с основанием \(n\), \(0\le a\le 2^{31}\).

Необходимо вывести значение \(a\) в системе счисления с основанием \(k\).

Решение должно содержать две функции перевода — из числа в произвольной системе счисления, записанного в переменной типа string в переменную типа int и обратно. Сдайте на проверку всю программу.

Примеры

ВводВывод
2
101111
16
2F
10
35
36
Z

H: Из шестнадцатеричной в двоичную

Переведите число из шестнадцатеричной системы счисления в двоичную. Исходное число может быть очень большим (до \(2\times10^5\) символов). Необходимо вывести результат без лидирующих нулей.

Решение оформите в виде функции string hex2bin(string s). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
hex2bin("2F"s)
"101111"s

I: Из двоичной в шестнадцатеричную

Переведите число из двоичной системы счисления в шестнадцатеричную. Исходное число может быть очень большим (до \(1{,}2\times10^6\) символов).

Решение оформите в виде функции string bin2hex(string s) Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
bin2hex("101111"s)
"2F"s

J: Из уравновешенной троичной в int

В уравновешенной троичной системе счисления используется основание 3 и три цифры: 0, 1 и -1. Цифру -1 будем обозначать знаком $. Достоинство уравновешенной троичной системы счисления: простота хранения отрицательных чисел и удобство нахождения числа, противоположному данному.

Вот как записываются небольшие числа в уравновешенной троичной системе счисления:

Десятичная

-9

-8

-7

-6

-5

-4

-3

-2

-1

0

1

2

3

4

5

6

7

8

9

Уравнов. троичная

$00

$01

$1$

$10

$11

$$

$0

$1

$

0

1

1$

10

11

1$$

1$0

1$1

10$

100

Подробней о уравновешенной троичной системе счисления можно прочитать в Википедии (статья Троичная система счисления, там используется термин «троичная симметричная система счисления»).

Дана запись числа в уравновешенной троичной системе счисления. Определите значение этого числа в типе int.

Решение оформите в виде функции int ter2int(string s). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
ter2int("$01"s)
-8

K: Из фибоначчиевой в int

Рассмотрим последовательность Фибоначчи: \(\varphi_1=1\), \(\varphi_2=2\), \(\varphi_n=\varphi_{n-1}+\varphi_{n-2}\) при \(n\gt 2\). В частности, \(\varphi_3=3\), \(\varphi_4=5\), \(\varphi_5=8\) и т.д.

Любое натуральное число можно представить в виде суммы нескольких членов последовательности Фибоначчи. Такое представление будет неоднозначным, но если наложить дополнительное условие, что в представлении нет двух соседних членов последовательности Фибоначчи, то представление становится единственным.

Будем говорить, что число \(a\) представимо в фибоначчиевой системе счисления в виде \(a_ka_{k-1}...a_1\), где \(a_i\in\{0;1\}\), если \(a=a_k\varphi_k+...+a_1\varphi_1\) и в записи \(a_ka_{k-1}...a_1\) нет двух единиц подряд.

Вот как записываются небольшие числа в фибоначчиевой системе счисления.

Десятичная

1

2

3

4

5

6

7

8

9

10

11

12

13

Фибоначчиева

1

10

100

101

1000

1001

1010

10000

10001

10010

10100

10101

100000

Подробней о фибоначчиевой системе счисления можно прочитать в Википедии (статья Фибоначчиева система счисления).

Дана запись числа в фибоначчиевой системе счисления. Переведите его в тип int. Гарантируется, что результат принимает значения от 0 до \(2\times 10^9\).

Решение оформите в виде функции int fib2int(string s). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
fib2int("10101"s)
12

L: Из int в уравновешенную троичную

Дано целое число oт \(-2\times 10^9\) до \(2\times 10^9\). Найдите его представление в уравновешенной троичной системе счисления без лидирующих нулей (за исключением числа 0, запись которого имеет вид 0).

Решение оформите в виде функции string int2ter(int n). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
int2ter(-8)
"$01"s

M: Из int в фибоначчиеву

Дано целое число oт 1 до \(2\times 10^9\). Выведите его представление в фибоначчиевой системе счисления без лидирующих нулей.

Решение оформите в виде функции string int2fib(int n). Сдайте на проверку только тело функции.

Вызов функции Возвращаемое значение
int2fib(12)
"10101"s