Разбор задач Апрельского кубка Санкт-Петербургской олимпиады по программированию 2020

Revision ru2, by pashka, 2020-04-22 21:19:04

Апрельский кубок Санкт-Петербургской олимпиады по программированию 2020 прошел вместо очной олимпиады Санкт-Петербурга для 3-7 классов (но мы планируем все-таки провести ее, когда карантин закончится!)

Социальная дистанция (первая лига A)

Если $$$d\ge x$$$, то условие уже соблюдается, поэтому ответ 0, иначе ответ равен $$$x-d$$$.

Пример кода на языке Python:

d = int(input())
x = int(input())
if d >= x:
  print(0)
else:
  print(x - d)

Три оценки (первая лига B)

Для того, чтобы сделать сумму второй и третьей оценки как можно больше, нужно стараться сделать первую оценку как можно меньше.

Если $$$n\le 11$$$, то можно сделать первую оценку равной 1, а остаток распределить между второй и третьей оценкой, только надо делать это аккуратно, чтобы обе оценки были от 1 до 5. Один из способов это сделать — разделить на две примерно равные части, как сделано в приведенном ниже коде.

Если $$$n\ge 11$$$, то можно последние две оценки сделать равными 5, а остаток сделать первой оценкой.

Пример кода на языке Python:

n = int(input())
if n <= 11:
    print(1, (n - 1) // 2, n // 2)
else:
    print(n - 10, 5, 5)

Делим конфетки (первая лига C, высшая лига A)

Для того, чтобы распределить конфеты между $$$n$$$ участниками так, чтобы они получили различное число конфет, нужно как минимум $$$s=1+2+\ldots+n$$$ конфет. Эту сумму можно посчитать либо циклом, либо по формуле суммы арифметической прогрессии, как в коде ниже. Если у нас конфет меньше, чем $$$s$$$, то распределить не получится. Если же больше, чем $$$s$$$, то можно лишние конфеты отдать участнику на первом месте, и после этого все еще все будут получать различное число. Таким образом, нам нужно просто проверить, что $$$m\ge s$$$.

Пример кода на языке Python:

n = int(input())
m = int(input())
s = n * (n + 1) // 2
if m >= s:
    print("Yes")
else:
    print("No")

Игрушечная машинка (первая лига D, высшая лига B)

Пример кода на языке Python:

a = int(input())

Пилообразная последовательность (первая лига E, высшая лига C)

Пример кода на языке Python:

a = int(input())

Коллекционирование карт (первая лига F, высшая лига D)

Пример кода на языке Python:

a = int(input())

Кролики (первая лига G, высшая лига E)

Пример кода на языке Python:

a = int(input())

Падающие буквы (первая лига H, высшая лига F)

Пример кода на языке Python:

a = int(input())

Прыжки (высшая лига G)

Пример кода на языке Python:

a = int(input())

Развороты скобок (высшая лига H)

Пример кода на языке Python:

a = int(input())

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru8 Russian pashka 2020-04-24 17:57:20 212
ru7 Russian pashka 2020-04-22 22:47:23 0 (опубликовано)
ru6 Russian pashka 2020-04-22 22:44:13 4
ru5 Russian pashka 2020-04-22 22:41:31 316
ru4 Russian pashka 2020-04-22 22:39:49 10
ru3 Russian pashka 2020-04-22 22:19:46 9926
ru2 Russian pashka 2020-04-22 21:19:04 1382
ru1 Russian pashka 2020-04-22 21:05:05 1901 Первая редакция (сохранено в черновиках)