Практические занятия по курсу ОиМП: различия между версиями
Перейти к навигации
Перейти к поиску
Нет описания правки |
Нет описания правки |
||
| Строка 11: | Строка 11: | ||
# Если требуется сравнить два числа с плавающей точкой (float) на равенство, то сравнивайте модуль их разницы с некоторым eps: |d1 - d2| < 0.0000001. | # Если требуется сравнить два числа с плавающей точкой (float) на равенство, то сравнивайте модуль их разницы с некоторым eps: |d1 - d2| < 0.0000001. | ||
=== | ===Задание 1. Ввод-вывод=== | ||
[http://official.contest.yandex.ru/contest/642/ Задачи.] | [http://official.contest.yandex.ru/contest/642/ Задачи.] | ||
[https://docs.google.com/spreadsheets/d/1LqW4k7heilZ8i1B7NCMGcr41kd5Pz1gIyD5rrOyGZjI/edit?usp=sharing Список обязательных задач для каждого студента.] | [https://docs.google.com/spreadsheets/d/1LqW4k7heilZ8i1B7NCMGcr41kd5Pz1gIyD5rrOyGZjI/edit?usp=sharing Список обязательных задач для каждого студента.] | ||
=== | ===Задание 2.=== | ||
Перед выполнением задания нужно установить библиотеку [http://pillow.readthedocs.org/en/latest/ Pillow]. | Перед выполнением задания нужно установить библиотеку [http://pillow.readthedocs.org/en/latest/ Pillow]. | ||
| Строка 22: | Строка 22: | ||
Замечание. Доступ к элементам pixels осуществляется так: pixels[i,j]. | Замечание. Доступ к элементам pixels осуществляется так: pixels[i,j]. | ||
====Бонусные задачи==== | |||
# Реализуйте масштабирование. | |||
# Реализуйте отражение. | |||
# Реализуйте размытие. | |||
# Напишите свой фильтр для обработки изображений. | |||
===Задание 3=== | |||
Решите 20 любых задач из [http://official.contest.yandex.ru/contest/642/ контеста Ввод-вывод]. | |||
====Бонусное задание. Шифрование RSA==== | |||
# Реализуйте [https://ru.wikipedia.org/wiki/RSA#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC_.D1.81.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D1.8F_.D0.BE.D1.82.D0.BA.D1.80.D1.8B.D1.82.D0.BE.D0.B3.D0.BE_.D0.B8_.D1.81.D0.B5.D0.BA.D1.80.D0.B5.D1.82.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.B9 алгоритм создания открытого и секретного ключей]. | |||
# Реализуйте [https://ru.wikipedia.org/wiki/RSA#.D0.A8.D0.B8.D1.84.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D1.80.D0.B0.D1.81.D1.88.D0.B8.D1.84.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5 алгоритмы шифрования и дешефрования]. Проверьте, что они работают. | |||
# Реализуйте алгоритм взлома. Функция должна принимать аргументы c, n и m (см. обозначения в Википедии) и возвращать d, приватный ключ, такое что m == c^d mod n. | |||
# Выберите некоторое значение m, например, m=100. Выведите таблицу: | |||
{|class="standard" | |||
!n=11*13=143 | |||
!n=17*31=527 | |||
!n=109*157=17113 | |||
!n=3557*2579=9173505 | |||
!n=3533*3571=12616343 | |||
|- | |||
! | |||
| | |||
| | |||
|} | |||
Версия от 19:22, 12 сентября 2014
Подготовка к занятиям
Для выполнения заданий необходимо установить интерпретатор Python.
Задачи, которые точно нужно уметь решать.
Рекомендации по выполнению
- Не используйте wildcard imports (from <module> import *), см. PEP8.
- Знак присваивания обособляйте пробелами с двух сторон. Плохо: a=b. Хорошо: a = b.
- Если требуется сравнить два числа с плавающей точкой (float) на равенство, то сравнивайте модуль их разницы с некоторым eps: |d1 - d2| < 0.0000001.
Задание 1. Ввод-вывод
Список обязательных задач для каждого студента.
Задание 2.
Перед выполнением задания нужно установить библиотеку Pillow.
Замечание. Доступ к элементам pixels осуществляется так: pixels[i,j].
Бонусные задачи
- Реализуйте масштабирование.
- Реализуйте отражение.
- Реализуйте размытие.
- Напишите свой фильтр для обработки изображений.
Задание 3
Решите 20 любых задач из контеста Ввод-вывод.
Бонусное задание. Шифрование RSA
- Реализуйте алгоритм создания открытого и секретного ключей.
- Реализуйте алгоритмы шифрования и дешефрования. Проверьте, что они работают.
- Реализуйте алгоритм взлома. Функция должна принимать аргументы c, n и m (см. обозначения в Википедии) и возвращать d, приватный ключ, такое что m == c^d mod n.
- Выберите некоторое значение m, например, m=100. Выведите таблицу:
| n=11*13=143 | n=17*31=527 | n=109*157=17113 | n=3557*2579=9173505 | n=3533*3571=12616343 |
|---|---|---|---|---|