Repeater-zone.ru

ПК Репитер
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

ЗаPython ил ЕГЭ на сотку или почему Python поможет на ЕГЭ

ЗаPython’ил ЕГЭ на сотку или почему Python поможет на ЕГЭ

Доброго времени суток каждому жителю Хабрвилля! Давненько я не писал статей! Пора это исправить!

В сегодняшней статье поговорим о насущной для многих выпускников школ теме — ЕГЭ. Да-да-да! Я знаю, что Хабр — это сообщество разработчиков, а не начинающих айтишников, но сейчас ребятам как никогда нужна поддержка именно сообщества. Ребят опять посадили на дистант. Пока не ясно на какой период, но уже сейчас можно сказать, что ЕГЭ по информатике будет на компьютерах и его можно зарешать при помощи языка Python.

Вот я и подумал, чтобы не получилось как в песне, стоит этим заняться. Я расскажу про все задачи первой части и их решения на примере демо варианта ЕГЭ за октябрь.

Всех желающих — приглашаю ниже!

Быстрый перевод из системы в систему

В Python есть интересные функции bin() , oct() и hex() . Работают данные функции очень просто:

Вывод в интерпретационном режиме

Вывод в интерпретационном режиме

Как вы видите, выводится строка, где 0b — означает, что число далее в двоичной системе счисления, 0o — в восьмеричной, а 0x — в шестнадцатеричной. Но это стандартные системы, а есть и необычные.

Давайте посмотрим и на них:

Данная программа будет работать при переводе из десятичной системы счисления в любую до 9, так как у нас нет букв. Давайте добавим буквы:

Способ объёмен, но понятен. Теперь давайте используем тот же функцию перевода из любой системы счисления в любую:

Вызвав функцию вывода print(convert_base(156, 16, 10)) мы переведём 156 из 10 в 16 систему счисления, а введя print(convert_base(’23’, 21, 4)) переведёт 23 из 4-ичной в 21-ичную систему (ответ: B).

Читать еще:  Ошибка 0xa00f4244: не работает камера в Windows 10

Задача 2

Все задания беру из первого октябрьского варианта (он же вариант № 9325894) с сайта Решу.ЕГЭ.

Решение данной задачи совсем простое: банальный перебор.

Нам вывелась вся таблица истинности (1 = True, 0 = False). Но это не очень удобно. Обратите внимание, что в задании, функция равно 0, так и давайте подправим код:

Далее — простой анализ.

Задача 5

Данная задача легко решается простой последовательностью действий в интерпретационном режиме:

Задача 6

Перепечатали и получили ответ:

Задача 12

В очередной раз, просто заменим слова на код:

Задача 14

Компьютер железный, он всё посчитает:

Задача 16

Опять же, просто дублируем программу в python:

Задача 17

Задача с файлом. Самое сложное — достать данные из файла. Но где наша не пропадала?!

Немного пояснений. Функция with() открывает файл считывает данные при помощи функции read() и закрывает файл. В остальном — задача стандартна.

Задача 19, 20 и 21

Все три задачи — задачи на рекурсию. Задачи идентичны, а вопросы разные. Итак, первая задача:

Пишем рекурсивную функцию и цикл перебора S:

Немного пояснений. В рекурсивной функции существует 3 переменные x — число камней в первой куче, y — число камней во второй куче, p — позиция. Позиция рассчитывается по таблице:

Перевод целых и дробных чисел из одной системы счисления в любую другую − теория, примеры и решения

Существуют позиционные и не позиционные системы счисления. Арабская система счисления, которым мы пользуемся в повседневной жизни, является позиционной, а римская − нет. В позиционных системах счисления позиция числа однозначно определяет величину числа. Рассмотрим это на примере числа 6372 в десятичном системе счисления. Пронумеруем это число справа налево начиная с нуля:

Читать еще:  Устранение неполадок с поиском в Windows (Виндовс) 10
число6372
позиция321

Тогда число 6372 можно представить в следующем виде:

Число 10 определяет систему счисления (в данном случае это 10). В качестве степеней взяты значения позиции данного числа.

Рассмотрим вещественное десятичное число 1287.923. Пронумеруем его начиная с нуля позиции числа от десятичной точки влево и вправо:

число1287.923
позиция321-1-2-3

Тогда число 1287.923 можно представить в виде:

1287.923 =1000+200+80 +7+0.9+0.02+0.003 = 1·10 3 +2·10 2 +8·10 1 +7·10 0 +9·10 -1 +2·10 -2 +3·10 -3 .

В общем случае формулу можно представить в следующем виде:

где Цn-целое число в позиции n, Д-k— дробное число в позиции (-k), s — система счисления.

Несколько слов о системах счисления.Число в десятичной системе счисления состоит из множества цифр <0,1,2,3,4,5,6,7,8,9>, в восьмеричной системе счисления — из множества цифр <0,1,2,3,4,5,6,7>, в двоичной системе счисления — из множества цифр <0,1>, в шестнадцатеричной системе счисления — из множества цифр <0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F>, где A,B,C,D,E,F соответствуют числам 10,11,12,13,14,15.

В таблице Таб.1 представлены числа в разных системах счисления.

Таблица 1
Система счисления
102816
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Перевод цифр из одной системы в другую

Чтобы перевести числа из одной необходимой нам системы в другую будет лучше сперва перевести число в десятичную СС, а уже с неё – другую, необходимую нам.

Пример перевода числа

Например:

Затем, нам необходимо:

  1. Провести перевод из десятичной систему в другую, нужную нам. Для этого сначала отдельно переводится целая и дробная часть числа.
  2. Целая часть числа десятичной системы переводится последовательным делением целой части числа на базис СС (для двоичной – на два, для восьмиричной – на восемь, для шестнадцатиричной – на шестнадцать и др.), до получения целого остатка, меньшего, нежели основание СС. Например:Перевод числа
  3. Для перевода из десятиричной в восьмиричную СС необходимо делить число на восемь до получения цельного остатка меньшего чем 8. В результате построения числа из остатков деления мы получим число 1147.
Читать еще:  Настройка роутеров ASUS

Примеры

1. Перевести 1237 (10) в систему с основанием 16.

Решение. Последовательно деля 1237 на 16, мы получим следующие остатки: 5, 13 и 4 (см. алгоритм 1). Чтобы записать 1237 (10) в 16-ричной форме, запишем указанные остатки в обратном порядке, заменив 13 на букву D. Получим: 1237 (10)=4D5 (16). Чтобы убедиться в правильности перевода, произведём проверку (см. алгоритм 3): 4D5 (16)=4•16²+13•16¹+5=1024+208+5=1237 (10).

2. Перевести 0,07080078125 (10) в 16-ричный вид.

Решение. Последовательно умножая 0,07080078125 на 16, отбрасывая целые части получаемых произведений, получим следующий ряд: 1, 2, 2 (см. алгоритм 2). Чтобы записать 0,07080078125 (10) в шестнвдцатиричной форме, запишем указанные цифры в прямом порядке. Получим: 0,07080078125 (10)=0,122 (16). Чтобы убедиться в правильности перевода, сделаем проверку (см. алгоритм 3): 0,122 (16)=1•(1/16¹)+2•(1/16²)+2•(1/16³)=0,0625+0,0078125+0,00048828125= 0,07080078125 (10).

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector