- Как переводить в троичную систему
- Решение
- Системы счисления
- A: Шестнадцатеричную цифру в int
- B: int в шестнадцатеричную цифру
- C: Из двоичной в int
- D: Из шестнадцатеричной в int
- E: Из int в двоичную
- F: Из int в шестнадцатеричную
- G: Из любой в любую
- H: Из шестнадцатеричной в двоичную
- I: Из двоичной в шестнадцатеричную
- J: Из уравновешенной троичной в int
- K: Из фибоначчиевой в int
- L: Из int в уравновешенную троичную
- M: Из int в фибоначчиеву
- N: Инкремент
- O: Декремент
- P: Инкремент в уравновешенной троичной системе счисления
- Q: Декремент в уравновешенной троичной системе счисления
- R: Фибоначчиев инкремент
- S: Фибоначчиев декремент
- T: Шестнадцатеричное сложение
- U: Уравновешенное троичное сложение
- V: Фибоначчиево сложение
- W: Шестнадцатеричное вычитание
- X: Фибоначчиево вычитание
- Y: Умножение длинного числа на короткое
- Z: Шестнадцатеричное умножение
- ZA: Развёрнутая фибоначчиева форма
- ZZ: Умножение Карацубы
Как переводить в троичную систему
− запись в троичной системе счисления имеет ровно 8 цифр.
Найдите минимальное и максимальное из этих чисел.
Прошу объяснить как переводить массив в двоичную систему счисления
Переписать положительные элементы массива целых чисел X в обратном порядке в массив Y. Вычислить.
Как переводить в троичную систему
В файле 1313 cодержится последовательность целых чисел. Элементы последовательности могут.
Как переводить числа в двоичную систему счисления?
обьясните пожалуйста, я просто кушаю питсу.
перевести число в троичную систему счисления в Prolog. кто-нибудь знает, как написать программу?
перевести число в троичную систему счисления в Prolog. кто-нибудь знает, как написать программу?
Перевод числа в троичную систему
Добрый день! Помогите составить код переводящее число N в троичную систему счисления. Заранее.
Сообщение было отмечено Fiyz как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13
def p(x): if (x % 5 and x % 7 and x % 11): return 3**7 x 3**8 return False for i in range(1000,10000): if p(i): print(i) break for i in range(9999, 999,-1): if p(i): print(i) break
Системы счисления
В системе счисления с основанием больше 10, цифры записываются так: 0, 1, 2, . 9, A, B, C, .
В тексте программ на языке Python можно использовать целочисленные константы, записанные в двоичной (префикс 0b ), восьмеричной (префикс 0o ) и шестнадцатеричной (префикс 0x ) системах счисления. После указанного префикса идут цифры, которые в двоичной системе счисления могут быть только 0 или 1, в восьмеричной — от 0 до 7, в шестнадцатеричной — от 0 до 9, а также буквы латинского алфавита от A до F (могут быть как строчными, так и заглавными). Например, десятичной число 179 можно задать несколькими способами.
A = 179 A = 0b10110011 A = 0o263 A = 0xB3
Если вы знаете стандартные функции языка Python для перевода представления чисел между различными системами счисления, то этими функциями пользоваться нельзя. Также нельзя использовать функции типа eval , exec и т.д.
Если программа выводит результат в системе счисления с основанием больше 10, то цифры записываются так: 0, 1, 2, . 9, A, B, C, .
A: Шестнадцатеричную цифру в int
Дана шестнадцатеричная цифра, записанная в строке из одного символа. Определите её числовое значение.
Решение оформите в виде функции hex2int(c: str) -> int.
На проверку сдайте только тело функции.
B: int в шестнадцатеричную цифру
Решите задачу, обратную предыдущей.
Решение оформите в виде функции int2hex(n: int) -> str.
C: Из двоичной в int
Дано число, записанное в двоичной системе счисления. Переведите его в тип int.
Решение оформите в виде функции bin2int(s: str) -> int .
Решение должно использовать схему Горнера.
D: Из шестнадцатеричной в int
Решите предыдущую задачу в случае, когда входное число задано в шестнадцатеричном виде. Соответствующая функция должна называться hex2int(s: str) -> int.
E: Из int в двоичную
Переведите число из int в двоичную систему числения.
F: Из int в шестнадцатеричную
Переведите число из десятичной системы в шестнадцатеричную.
G: Из любой в любую
Напишите программу, переводящую запись числа между двумя произвольными системами счисления.
На вход программа получает три величины: n, A, k, где n и k – натуральные числа от 2 до 36: основания системы счисления, A – число, записанное в в системе счисления с основанием n, A
Необходимо вывести значение A в системе счисления с основанием k без лидирующих нулей.
H: Из шестнадцатеричной в двоичную
Переведите число из шестнадцатеричной системы счисления в двоичную. Исходное число может быть очень большим (до \(2\times10^5\) символов). Необходимо вывести результат без лидирующих нулей.
I: Из двоичной в шестнадцатеричную
Переведите число из двоичной системы счисления в шестнадцатеричную. Исходное число может быть очень большим (до \(12\times10^6\) символов).
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.
K: Из фибоначчиевой в int
Рассмотрим последовательность Фибоначчи: \(\varphi_1=1\), \(\varphi_2=2\), \(\varphi_n=\varphi_+\varphi_\) при \(n\gt 2\). В частности, \(\varphi_3=3\), \(\varphi_4=5\), \(\varphi_5=8\) и т.д.
Любое натуральное число можно представить в виде суммы нескольких членов последовательности Фибоначчи. Такое представление будет неоднозначным, но если наложить дополнительное условие, что в представлении нет двух соседних членов последовательности Фибоначчи, то представление становится единственным.
Будем говорить, что число \(A\) представимо в фибоначчиевой системе счисления в виде \(a_ka_. a_1\), где \(a_i\in\\), если \(A=a_k\varphi_k+. +a_1\varphi_1\) и в записи \(a_ka_. 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.
L: Из int в уравновешенную троичную
Дано целое число oт \(-2\times 10^9\) до \(2\times 10^9\). Найдите его представление в уравновешенной троичной системе счисления без лидирующих нулей (за исключением числа 0, запись которого имеет вид 0).
M: Из int в фибоначчиеву
Дано целое число oт 1 до \(2\times 10^9\). Выведите его представление в фибоначчиевой системе счисления без лидирующих нулей.
N: Инкремент
Дана запись числа в некоторой системе счисления. Увеличьте число на 1 и верните его представление в этой же системе счисления. Сдайте на проверку только тело функции.
Решение оформите в виде функции inc(n: str, base: int) -> str .
O: Декремент
Решите аналогичную задачу для уменьшения числа на 1.
P: Инкремент в уравновешенной троичной системе счисления
Реализуйте инкремент числа в уравновешенной троичной системе счисления.
Решение оформите в виде функции inc_ter(n: str) -> str .
Q: Декремент в уравновешенной троичной системе счисления
Реализуйте декремент числа в уравновешенной троичной системе счисления.
Решение оформите в виде функции dec_ter(n: str) -> str .
R: Фибоначчиев инкремент
Реализуйте инкремент числа в фибоначчиевой системе счисления.
Решение оформите в виде функции inc_fib(n: str) -> str .
S: Фибоначчиев декремент
Реализуйте декремент числа в фибоначчиевой системе счисления.
Решение оформите в виде функции dec_fib(n: str) -> str .
T: Шестнадцатеричное сложение
Дано два шестнадцатеричных числа, длиной до 100000 символов каждый. Вычислите их сумму.
U: Уравновешенное троичное сложение
Реализуйте сложение в уравновешенной троичной системе счисления.
Пример соответствует выражению 14+(-10)=4.
V: Фибоначчиево сложение
Реализуйте сложение в фибоначчиевой системе счисления.
Решение оформите в виде функции sum_fib(n1: str, n2: str) -> str .
W: Шестнадцатеричное вычитание
Реализуйте алгоритм вычитания двух чисел, записанных в шестнадцатеричной системе счисления.
Решение оформите в виде функции dif_hex(n1: str, n2: str) -> str .
X: Фибоначчиево вычитание
Реализуйте вычитание в фибоначчиевой системе счисления.
Решение оформите в виде функции dif_fib(n1: str, n2: str) -> str . Гарантируется, что первое данное число не меньше второго.
Y: Умножение длинного числа на короткое
Реализуйте алгоритм умножения длинного числа, записанного в шестнадцатеричной системе счисления, на короткое число (из одной шестнадцатеричной цифры).
Решение оформите в виде функции mul_hex(n1: str, n2: str) -> str . Гарантируется, что второй параметр состоит ровно из одной цифры.
Сложность решения: линейная от длины первого числа (длина числа до 100000 знаков, ограничение по времени — 1 секунда).
Z: Шестнадцатеричное умножение
Реализуйте алгоритм умножения двух чисел, записанных в шестнадцатеричной системе счисления.
Решение оформите в виде функции mul_hex(n1: str, n2: str) -> str .
Сложность решения: квадрат от длины входных чисел (длина чисел до 1000 знаков).
- Использование длинной арифметики Python (например, привести число в int, перемножить, перевести обратно в строку).
- Переход к большему основанию системы счисления (например, к основанию 256 или 65536).
- Переведите строку в список цифр (значений типа int), все вычисления проводите только с числами, а не со строками. Перевод обратно в строку выполняйте в самом конце.
- “Разверите“ число: под индексом \(i\) в списке должна храниться цифра, соответствующая \(16^i\). Тогда при перемножении двух цифр \(a_i\) и \(b_j\) результат попадает в разряд \(i+j\).
- Можно не обращать внимания на переполнения разрядов и не следить за тем, что все полученные цифры будут меньше 16. Считайте, что вы храните произвольные коэффициенты, соответствующие степеням основания, а нормализацию представления выполните в самом конце.
ZA: Развёрнутая фибоначчиева форма
В развёрнутой фибоначчиевой форме запись числа в фибоначчиевой системе счисления не содержит двух подряд идущих нулей. Для каждого числа существует единственное представление в развёрнутой фибоначчиевой форме.
Дано целое число oт 1 до 2·10 9 . Найдите его представление в развёрнутой фибоначчиевой форме.
ZZ: Умножение Карацубы
Реализуйте алгоритм умножения длинных чисел, записанных в шестнадцатеричной системе счисления, при помощи метода Карацубы.
Решение оформите в виде функции mul_hex(n1: str, n2: str) -> str .
Требования к решению: вычисления должны проводиться в 16-ричной системе счисления (нельзя переходить к большему основанию, например, 256 или 65536). Длина входных чисел — до 10000 знаков, ограничение по времени — 10 секунд.
- Метод Карацубы — рекурсивный алгоритм, вы сводите задачу умножения длинных чисел к задаче умножение чисел меньшей длины. При этом при маленькой длине чисел метод Карацубы не даёт выгоды, используйте умножение “в столбик”. Скорее всего при длинах чисел меньше 100 выгоднее использовать умножение “в столбик”, а не метод Карацубы. Возможно, вам придется подбирать эту границу экспериментально.
- Можно не обращать внимания на переполнение разрядов и даже можно считать, что при умножении в некоторых разрядах могут получаться отрицательные значения (там же есть вычитание). Да и вычитание можно реализовать без заёма значений из старших разрядов, просто считайте, что цифры могут быть и отрицательными. Нормализацию представления результата выполняйте в самом конце.