Командный турнир по программированию «Первые шаги» 2015 КГБОУ «Центр образования «Эврика»

Презентация:



Advertisements
Похожие презентации
Использование частных случаев в условиях. Флаг в задачах Задача. Определить место первого четного элемента в массиве.
Advertisements

Ветвление Полное ветвление Если УСЛОВИЕ то КОМАНДА 1 иначе КОМАНДА 2; IF УСЛОВИЕ THEN КОМАНДА 1 ELSE КОМAНДА 2;
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
Задача: определить является ли простым заданное число.
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
Циклы. Вычислить сумму ряда чисел Program sum; var a: integer; s: real; Begin a:=1; s:=0; while a<600 do begin a:=a+1; s:=s+1/a; end; writeln ( ' s=
Программирование на языке Паскаль Самостоятельная работа в группах.
Доступ к элементам массива Изменение элементов массива.
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
Задача: даны два числа, найти их наибольший общий делитель.
Задача: даны два числа, найти их наибольший общий делитель.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ В TURBO PASCAL Условие Оператор ДаНет Учитель информатики: Коваленко Татьяна Викторовна
Цикл со счетчиком. Ц ИКЛ СО СЧЕТЧИКОМ FOR управляющая переменная:= a TO n DO операторы;(если an) Здесь a – начальное значение управляющей переменной;
Условный оператор в Паскале. 1. Полный условный оператор. 2. Неполный условный оператор. 3. Составные условия.
Программирование на языке Паскаль. Часть II К. Поляков, Сумма выбранных элементов 1 Задача: заполнить массив случайными числами в интервале [-10,10]
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест.
Задания сЗадания сТребовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у - действительные.
Если прямо пойдешь, то… Ветвления на языке Pascal.
Транксрипт:

Командный турнир по программированию «Первые шаги» 2015 КГБОУ «Центр образования «Эврика»

Задача A. k-я секунда суток Идея решения. Смоделируем битву!

Задача A. k-я секунда суток Задача на целочисленное деление. Вычислим количество секунд в полных сутках: 24 * 60 *60 = По ограничениям задачи ясно, что с начала отсчета прошло менее суток. В одном часе 60 * 60 = 3600 секунд, значит с начала отсчета прошло k // 3600 часов. С начала нового часа прошло k % 3600 секунд. Тогда полных минут прошло (k % 3600) // 60 минут.

Задача A. k-я секунда суток var n:longint; begin readln(n); writeln ('It is ',n div 3600,' hours ',(n mod 3600) div 60,' minutes.'); end.

Задача B. Электропоезд Идея решения. Смоделируем битву!

Задача B. Электропоезд Заведем массив для хранения времени отправления поезда с каждой станции. Заполним его значениями, проверяя, не перешли ли мы на новые сутки.

Задача B. Электропоезд hours, minutes = map(int, input().split(':')) initial = hours * 60 + minutes n = int(input()) leaving_time = [0] * n leaving_time[0] = initial curr = initial t = [None] + list(map(int, input().split())) for i in range(1, n): curr += t[i] if curr >= 1440: curr = curr leaving_time[i] = curr for t in leaving_time: print((t // 60) // 10, (t // 60) % 10, ':', (t % 60) // 10, (t % 60) % 10, sep='')

Задача C. Электронные часы

Пробежимся от первого момента времени до второго, проверяя совпадение часов и минут.

Задача C. Электронные часы var h1, m1, h2, m2, count, t1, t2, t: integer; begin readln(h1, m1, h2, m2); t1 := h1 * 60 + m1; t2 := h2 * 60 + m2; if t2 < t1 then t2 += 1440; count := 0; for t := t1 to t2 do if (t div 60) mod 24 = (t mod 60) then count += 1; writeln(count); end.

Задача D. Праздники

Наибольшее количество праздников получится, если невисокосный год начинается с субботы. В этом случае мы сразу получаем 2 выходных дня. По формуле 7*(k div 5) найдем количество полных праздничных недель. По формуле k mod 5 найдем количество оставшихся праздничных дней, не «заполнивших» полностью неделю. Осталось рассмотреть случаи, когда мы добрались до 23 февраля (54 день года, достигается при к = 36) или до 8 марта (67 день года, достигается при к = 45).

Задача D. Праздники var k, res: longint; begin readln(k); res:=2 + 7*(k div 5) + (k mod 5); if k>36 then inc(res); If k>44 then inc(res); if (k=39) or (k=44) or (k=48) or (k=49) then inc(res, 2); writeln(res); end.

Задача E. Ежедневник

Будем перебирать года по порядку, начиная со следующего. Невисокосный год отличается от предыдущего года на 1 день, високосный – на два. Как только разница в днях (точнее, ее остаток при делении на 7) станет равна нулю – год подходит. Но нужно еще проверить, являются ли текущий год таким же високосным или не високосным, как данный.

Задача E. Ежедневник def IsLeapYear(n): return (n % 4 == 0 and n % 100 != 0) or n % 400 == 0 StartYear = int(input()) DayDiffer = 0 CurrentYear = StartYear while DayDiffer % 7 != 0 or IsLeapYear(CurrentYear) != IsLeapYear(StartYear) or DayDiffer == 0: CurrentYear = CurrentYear + 1 if IsLeapYear(CurrentYear): DayDiffer += 2 else: DayDiffer += 1 print(CurrentYear)

Спасибо за внимание!