МБОУ «Джалильская СОШ №1 с углубленным изучением отдельных предметов» Базовая площадка технического творчества Мастер-класс «Решение олимпиадных задач по информатике 2012 года» Провела: учитель информатики высшей квалификационной категории Давлетова Ильсеяр Марселевна Джалиль, 2013 год Введение. Целью кружка является: изучение методов структурного и объектно-ориентированного программирования на примере языков Turbo Pascal и Delphi и получение навыков разработки проектов в среде Delphi. Задачи: Изучить концепцию традиционного и объектно-ориентированного программирования; Познакомить с методами структурного и объектно-ориентированного программирования как наиболее распространенными и эффективными методами разработки программных продуктов; Привить навык работы с интегрированной средой объектно-ориентированного визуального языка программирования В первой части кружковых занятий учащиеся получают начальные знания, умения и навыки необходимые для решения олимпиадных задач. Знакомятся с методами написания простых программ. Изучаются основные темы, на знании которых базируются решения большинства олимпиадных задач. Во второй части кружковых занятий учащиеся знакомятся с методами объектноориентированного программирования. Систему программирования Delphi называют также средой проектирования или просто средой Delphi. Почему в этом термине слово «программирование» заменено словом «проектирование»? Учащиеся должны научиться создавать пусть не очень сложные, но настоящие программные приложения, работающие в системе Windows. Цель занятий: помочь ученикам изучить и освоить современные методы решения олимпиадных задач по информатике и программированию. Это будет очень способствовать развитию общего уровня учеников и придаст им смелости участвовать и побеждать в олимпиадах по информатике и программированию. Но прежде всего надо заметить, что решение задач олимпиадного уровня по информатике часто требует особых усилий и знаний. И владение этими знаниями и навыками помогают решению различных проблем в информационной сфере. Недаром многие известные фирмы, такие как Intel, Microsoft, IBM, Sun HP и другие, при наборе специалистов проводят тестирование по олимпиадным задачам. Еще одна практическая ценность наших занятий в том, что по прошествии обучения для вас не будут представлять трудностей задания второй и третьей частей Единого Государственного Экзамена. Основной тип занятий — практическая работа. Основываемся на занятиях на том, что изучено по школьной программе на уроках информатики. Практическая часть. Задача №1. (Суд идёт) Судебная коллегия состоит из председателя суда и еще трёх судей. При голосовании за приговор председатель имеет два голоса, а остальные судьи — по одному. Приговор считается утвержденным, если больше половины голосов будет отдано в его поддержку. По результатам голосования судей требуется определить, утвержден ли приговор. Входные данные Вводятся четыре числа разделенных пробелами — результаты голосования сначала председателя суда, а затем остальных трёх судей. Единица означает поддержать приговор, ноль — отклонить приговор. Выходные данные Вывести слово YES (заглавными буквами), если суд принял решение поддержать приговор, и NO (заглавными буквами), если суд решил отклонить приговор. Примеры тестов входные данные 1010 выходные данные YES входные данные 0011 выходные данные NO Решение var i,y,n:integer; x:array[1..4] of integer; begin for i:=1 to 4 do read(x[i]); y:=0;n:=0; for i:=1 to 4 do if x[i]=1then y:=y+1 else n:=n+1; if y=n then if x[1]=1 then writeln('YES') else writeln('NO') else if y>n then writeln('YES') else writeln('NO'); end. Задача №2. (Переверни последовательность) Вводится 5 чисел. Требуется записать их в обратном порядке, при этом переставив все цифры в каждом числе в обратном порядке. Входные данные Вводятся 5 натуральных чисел, меньших 1000. Числа разделены пробелом. Выходные данные Вывести полученную последовательность. Числа не должны содержать ведущих нулей (то есть не должны начинаться с нуля). Примеры тестов входные данные 12345 выходные данные 54321 входные данные 23 543 100 230 7 выходные данные 7 32 1 345 32 Решение var i:integer;x:array [1..5] of integer; begin for i:=1 to 5 do read(x[i]); for i:=1 to 5 do if x[i] div 100<>0 then x[i]:=(x[i] mod 10)*100+((x[i] div 10) mod 10)*10+x[i] div 100 else if x[i] div 10<>0 then x[i]:=(x[i] mod 10)*10+x[i] div 10; for i:=5 downto 1 do write(x[i],' '); end. Задача №3. (Кубики) Фабрика по производству настольных игр собирается изготовить N игральных кубиков. В ходе их изготовления необходимо тщательно обработать поверхность кубиков. Для этого кубики укладываются в один слой на лоток (не более M штук за один раз), и шлифовальный круг, вращающийся в горизонтальной плоскости, в течение одной минуты шлифует верхние грани всех уложенных кубиков одновременно. Затем на лоток укладывается новая порция кубиков (или те же самые переворачиваются другой гранью кверху), и снова включается шлифовальный круг. Для уменьшения износа шлифовального круга желательно минимизировать время его работы. Требуется составить программу, определяющую минимальное время, которое необходимо для обработки всех кубиков. Технические требования: Входной файл: INPUT.TXT. Выходной файл:OUTPUT.TXT. Ограничение по времени тестирования: 1 секунда на один тест. Формат входных данных: Входной файл INPUT.TXT содержит два разделённых пробелом целых числа: N 6 6 (0 N 10 ) — количество кубиков и M (1 M 10 ) — вместительность лотка. Формат выходных данных: Выходной файл OUTPUT.TXT содержит одно целое число — минимальное время работы шлифовального круга в минутах. Пример файла входных данных: 20 30 64 Решение Program kubiki; Var inf,outf:Text; n,m,t:LongInt; Begin Assign(inf,'input.txt'); Reset(inf); Readln(inf,n,m); If n=0 Then t:=0 Else If n<=m Then t:=6 Else Begin t:=(n*6) div m; If (n*6) mod m >0 Then Inc(t); End; Assign(outf,'output.txt'); Rewrite(outf); Writeln(outf,t); Close(outf); End. Пример файла выходных данных: 6 9