Переведите число из шестнадцатеричной системы счисления в двоичную. Исходное число может быть очень большим (до \(2\times10^5\) символов). Необходимо вывести результат без лидирующих нулей.
Решение оформите в виде функции string hex2bin(string s).
Сдайте на проверку только тело функции.
| Вызов функции | Возвращаемое значение |
|---|---|
hex2bin("2F"s) |
"101111"s |
Переведите число из двоичной системы счисления в шестнадцатеричную. Исходное число может быть очень большим (до \(1{,}2\times10^6\) символов).
Решение оформите в виде функции string bin2hex(string s)
Сдайте на проверку только тело функции.
| Вызов функции | Возвращаемое значение |
|---|---|
bin2hex("101111"s) |
"2F"s |
В уравновешенной троичной системе счисления используется основание 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 |
Рассмотрим последовательность Фибоначчи: \(\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 |
Дано целое число oт \(-2\times 10^9\) до \(2\times 10^9\). Найдите его представление в уравновешенной троичной системе счисления без лидирующих нулей (за исключением числа 0, запись которого имеет вид 0).
Решение оформите в виде функции string int2ter(int n).
Сдайте на проверку только тело функции.
| Вызов функции | Возвращаемое значение |
|---|---|
int2ter(-8) |
"$01"s |
Дано целое число oт 1 до \(2\times 10^9\). Выведите его представление в фибоначчиевой системе счисления без лидирующих нулей.
Решение оформите в виде функции string int2fib(int n).
Сдайте на проверку только тело функции.
| Вызов функции | Возвращаемое значение |
|---|---|
int2fib(12) |
"10101"s |
Дана запись числа в некоторой системе счисления. Увеличьте число на 1 и верните его представление в этой же системе счисления.
Решение оформите в виде функции void inc(string & n, int base).
Сдайте на проверку только тело функции.
Первый параметр — запись числа в некоторой системе счисления, запись содержит символы '0', ..., '9', 'A', ..., 'Z', второй параметр — основание системы счисления, не превосходящее 36. Длина числа не превосходит 100000 символов.
| Вызов функции | Вывод |
|---|---|
string n = "19A"s; |
1A0 |
Решите задачу уменьшения числа на 1.
Решение оформите в виде функции void dec(string & n, int base).
Сдайте на проверку только тело функции. Гарантируется, что \(n\ge 1\).
| Вызов функции | Вывод |
|---|---|
string n = "1A0"s; |
19A |
Реализуйте инкремент числа в уравновешенной троичной системе счисления.
Решение оформите в виде функции void inc_ter(string & n).
Сдайте на проверку только тело функции.
Входная строка может иметь длину до 100000 символов.
| Вызов функции | Вывод |
|---|---|
string n = "$01"s; |
$1$ |
Реализуйте декремент числа в уравновешенной троичной системе счисления.
Решение оформите в виде функции void dec_ter(string & n).
Сдайте на проверку только тело функции.
Входная строка может иметь длину до 100000 символов.
| Вызов функции | Вывод |
|---|---|
string n = "$1$"s; |
$01 |