«Первые шаги» 2015 Командный турнир по программированию КГБОУ «Центр образования «Эврика» Задача A. k-я секунда суток Идея решения. Смоделируем битву! Задача A. k-я секунда суток Задача на целочисленное деление. Вычислим количество секунд в полных сутках: 24 * 60 *60 = 86400. По ограничениям задачи ясно, что с начала отсчета прошло менее суток. В одном часе 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 - 1440 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. Электронные часы Пробежимся от первого момента времени до второго, проверяя совпадение часов и минут. Задача 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. Праздники Задача 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. Ежедневник Задача 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) Спасибо за внимание!