Практические занятия по курсу ОиМП — различия между версиями
Материал из Wiki - Факультет компьютерных наук
Строка 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 | ||
+ | |- | ||
+ | ! | ||
+ | | | ||
+ | | | ||
+ | |} |
Версия 22: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 |
---|---|---|---|---|