Системы счисления
В системе счисления с основанием больше 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: Шестнадцатеричная цифра — 1
Дана шестнадцатеричная цифра, которую необходимо считать в величину типа str . Выведите ее десятичное значение.
Программа должна содержать функцию перевода hex2int(c). Аргумент функции имеет тип str , результат — int .
B: Шестнадцатеричная цифра — 2
Решите задачу, обратную предыдущей.
C: Из двоичной в int
Дано число, записанное в двоичной системе счисления. Переведите его в тип int и выведите на экран в десятичном виде. Исходное число необходимо считать в переменную типа string, для перевода реализовать функцию bin2int(s). Аргумент функции имеет тип str , результат — int .
10110011
D: Из шестнадцатеричной в int
Решите предыдущую задачу в случае, когда входное число задано в шестнадцатеричном виде. Соответствующая функция должна называться hex2int(s). Аргумент функции имеет тип str , результат — int .
E: Из int в двоичную
Переведите число из десятичной системы в двоичную. Соответствующая функция должна называться int2bin(n). Аргумент функции — число типа int , результат имеет тип str .
10110011
F: Из int в шестнадцатеричную
Переведите число из десятичной системы в шестнадцатеричную. Соответствующая функция должна называться int2hex(n).
G: Из любой в любую
Напишите программу, переводящую запись числа между двумя произвольными системами счисления.
На вход программа получает три величины: n, A, k, где n и k – натуральные числа от 2 до 36: основания системы счисления, A – число, записанное в в системе счисления с основанием n, A
Необходимо вывести значение A в системе счисления с основанием k без лидирующих нулей.
Решение должно содержать две функции перевода — из числа в произвольной системе счисления, записанного в переменной типа str в переменную типа int и обратно.
2
101111
16
10
35
36
H: Из шестнадцатеричной в двоичную
Переведите число из шестнадцатеричной системы счисления в двоичную. Исходное число может быть очень большим (до \(2\times10^5\) символов). Необходимо вывести результат без лидирующих нулей.
101111
I: Из двоичной в шестнадцатеричную
Переведите число из двоичной системы счисления в шестнадцатеричную. Исходное число может быть очень большим (до \(12\times10^6\) символов).
101111
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 |
Подробней о уравновешенной троичной системе счисления можно прочитать в Википедии (статья Троичная система счисления, там используется термин «троичная симметричная система счисления») а также в этой статье.
Дана запись числа в уравновешенной троичной системе счисления. \(10^5\)
K: Из фибоначчиевой в int
Любое натуральное число можно представить в виде суммы нескольких членов последовательности Фибоначчи. Такое представление будет неоднозначным, но если наложить дополнительное условие, что в представлении нет двух соседних членов последовательности Фибоначчи, то представление становится единственным.
Будем говорить, что число A представимо в фибоначчиевой системе счисления в виде akak-1. a2, где ai∈, если A=akFk+. +a2F2 и в записи akak-1. a2 нет двух единиц подряд.
Вот как записываются небольшие числа в фибоначчиевой системе счисления:
| Десятичная | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Фибоначчиева | 0 | 1 | 10 | 100 | 101 | 1000 | 1001 | 1010 | 10000 | 10001 | 10010 | 10100 | 10101 | 100000 |
Подробней о фибоначчиевой системе счисления можно прочитать в Википедии (статья Фибоначчиева система счисления).
Дана запись числа в фибоначчиевой системе счисления. Запишите его в десятичной системе счисления.
Программа получает на вход строку из символов 0 и 1 и должна вывести одно целое число. Гарантируется, что результат может принимать значения от 0 до 2·10 9 .
10101
L: Из int в уравновешенную троичную
Дано целое число oт -2·10 9 до 2·10 9 . Выведите его представление в уравновешенной троичной системе счисления без лидирующих нулей.
M: Из int в фибоначчиеву
Дано целое число oт 0 до 2·10 9 . Выведите его представление в фибоначчиевой системе счисления без лидирующих нулей.
10101
N: Инкремент
Первая строка входных данных содержит последовательность символов ‘0’, . ‘9’, ‘A’, . ‘Z’, являющейся записью некоторого неотрицательного числа в системе счисления с основанием base. Длина числа не превосходит 100000 символов. Вторая строка входных данных содержит основание системы счисления base, не превосходящее 36.
Увеличьте это число на 1 и выведите результат в той же системе счисления.
19A
11
O: Декремент
Первая строка входных данных содержит последовательность символов ‘0’, . ‘9’, ‘A’, . ‘Z’, являющейся записью некоторого положительного числа в системе счисления с основанием base. Длина числа не превосходит 100000 символов. Вторая строка входных данных содержит основание системы счисления base, не превосходящее 36.
Уменьшите это число на 1 и выведите результат в той же системе счисления.
1A0
11
P: Инкремент в уравновешенной троичной системе счисления
Дана запись некоторого числа в уравновешенной троичной системе счисления, длина записи не превосходит 100000 символов.
Увеличьте это число на 1 и выведите его значение в той же системе.
Q: Декремент в уравновешенной троичной системе счисления
Уменьшите на 1 длинное число, записанное в уравновешенной троичной системе счисления.
R: Фибоначчиев инкремент
Дано целое неотрицательное число n, записанное в фибоначчиевой системе счисления, длина числа не превосходят 100000 символов. Выведите значение числа n+1 в фибоначчиевой системе счисления.
100101
101000
S: Фибоначчиев декремент
Дано целое положительное число n, записанное в фибоначчиевой системе счисления, длина числа не превосходят 100000 символов. Выведите значение числа n-1 в фибоначчиевой системе счисления.
101000
100101
T: Шестнадцатеричное сложение
Дано два шестнадцатеричных числа, длиной до 100000 символов каждый. Вычислите их сумму и выведите результат в шестнадцатеричной системе счисления.
U: Уравновешенное троичное сложение
Дано два числа, записанных в уравновешенной троичной системе счисления. Выведите их сумму без лидирующих нулей. Длины входных чисел не превосходят 100.000 символов.
Пример соответствует выражению 14+(-10)=4.
V: Фибоначчиево сложение
Даны два числа, записанные в фибоначчиевой системе счисления, длины чисел не превосходят 100.000 символов. Выведите значение их суммы в фибоначчиевой системе счисления.
10010
10101
1000001
W: Марсианские факториалы
В 3141 году очередная экспедиция на Марс обнаружила в одной из пещер таинственные знаки. Они однозначно доказывали существование на Марсе разумных существ. Однако смысл этих таинственных знаков долгое время оставался неизвестным. Недавно один из ученых, профессор Очень-Умный, заметил один интересный факт: всего в надписях, составленных из этих знаков, встречается ровно \(K\) различных символов. Более того, все надписи заканчиваются на длинную последовательность одних и тех же символов.
Вывод, который сделал из своих наблюдений профессор, потряс всех ученых Земли. Он предположил, что эти надписи являются записями факториалов различных натуральных чисел в системе счисления с основанием \(K\). А символы в конце — это конечно же нули — ведь, как известно, факториалы больших чисел заканчиваются большим количеством нулей. Например, в нашей десятичной системе счисления факториалы заканчиваются на нули, начиная с \(5!=1\times2\times3\times4\times5\). А у числа \(100!\) в конце следует \(24\) нуля в десятичной системе счисления и \(48\) нулей в системе счисления с основанием 6 — так что у предположения профессора есть разумные основания!
Теперь ученым срочно нужна программа, которая по заданным числам \(N\) и \(K\) найдет количество нулей в конце записи в системе счисления с основанием \(K\) числа \(N!\), чтобы они могли проверить свою гипотезу. Вам придется написать им такую программу!
В первой строке входных данных содержатся числа \(N\) и \(K\), разделенные пробелом, (\(1\le N \le 10^9\), \(2 \le K \le 1000\)). Выведите число \(X\) — количество нулей в конце записи числа \(N!\) в системе счисления с основанием \(K\).
Напишите функцию которая находит количество цифр в десятичной записи числа



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Напишите функцию которая находит количество цифр в десятичной записи числа
Для целых чисел определены операции + , — , * и ** . Операция деления / для целых чисел возвращает вещественное число (значение типа float ). Также функция возведения в степень возвращает значение типа float , если показатель степени — отрицательное число.
Но есть и специальная операция целочисленного деления, выполняющегося с отбрасыванием дробной части, которая обозначается // (она соответствует операции div в Паскале). Она возвращает целое число: целую часть частного. Другая близкая ей операция − это операция взятия остатка от деления, обозначаемая % (она соответствует операции mod в Паскале). Например:
print(17 / 3) # выведет 5.66666666667 print(17 // 3) # выведет 5 print(17 % 3) # выведет 2
2. Действительные числа
В этом разделе речь пойдет о действительных числах, имеющих тип float .
Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float :
1.492
x = float(input()) print(x)
Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русских текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись «с плавающей точкой» (также называемая «научная» запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·10 11 , а масса молекулы воды 2.99·10 -23 .
Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записываются так: сначала пишется мантисса, затем пишется буква e , затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23 . Перед самим числом также может стоять знак минус.
Напомним, что результатом операции деления / всегда является действительное число ( float ), в то время как результатом операции // является целое число ( int ).
Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть int(1.7) == 1 , int(-1.7) == -1 .
3. Библиотека math
Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется math .
Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой
import math
Например, пусть мы хотим округлять вещественные числа до ближайшего целого числа вверх. Соответствующая функция ceil от одного аргумента вызывается, например, так: math.ceil(x) (то есть явно указывается, что из модуля math используется функция ceil ). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:
import math x = math.ceil(4.2) y = math.ceil(4.8) print(x) print(y)
Другой способ использовать функции из библиотеки math , при котором не нужно будет при каждом использовании функции из модуля math указывать название этого модуля, выглядит так:
from math import ceil x = 7 / 2 y = ceil(x) print(y)
from math import * x = 7 / 2 y = ceil(x) print(y)
Ниже приведен список основных функций модуля math . Более подробное описание этих функций можно найти на сайте с документацией языка Питон.
Некоторые из перечисленных функций ( int , round , abs ) являются стандартными и не требуют подключения модуля math для использования.
Условие
Дано N чисел: сначала вводится число N, затем вводится ровно N целых чисел. Подсчитайте количество нулей среди введенных чисел и выведите это количество. Вам нужно подсчитать количество чисел, равных нулю, а не количество цифр.
Решение
num_zeroes = 0 for i in range(int(input())): if int(input()) == 0: num_zeroes += 1 print(num_zeroes)
Добавить комментарий Отменить ответ
ЕГЭ на соточку для чайников
Прошу прощения, что так долго пропадал. Питошка вернулся, да еще и с группой в вконтакте, подписывайтесь. Помимо этого, на питошке откроется новая рубрика, в которой будут четкие объяснения всех заданий ЕГЭ и ОГЭ по информатике, внимательно прочитав которые, я уверен, вы улучшите свои баллы на экзамене