e-olymp 7401. Друзья Степана

Задача

Степан вернулся с международной олимпиады школьников по программированию (ИОИ) и привез с собой $n$ разноцветных камней в качестве сувениров. Степан вовсе не жадный мальчик, поэтому решил поделиться камнями со своими друзьями. Каждому другу Степан отдал ровно один камень. Оказалось, что у самого Степана остался тоже только один камень. Определите, сколько же у него друзей.

Входные данные

Одно число $n$ (1 ≤ $n$ ≤ 100).

Выходные данные

Выведите одно число — количество друзей Степана.

Пояснение к примеру

Степан привёз 2 камня, один из которых остался у него. Значит, второй камень Степан отдал своему единственному другу.

Тесты

Входные данные Выходные данные
2 1
3 2
6 5
50 49
100 99

Код программы

Решение

Известно, что Степан разделил камни между своими друзьями таким образом, что каждому из друзей досталось по 1 камню, и 1 камень остался. Значит количество камней при делении на количество друзей равно единице с единицей в остатке, из чего следует, что количество друзей разнится от количества камней на единицу, то есть — равно $n-1$.

Ссылки

e-olymp

https://ideone.com

Наталья Федина

Прикладная математика Одесского национального университета имени И.И.Мечникова

e-olymp 8288. Олимпиада по программированию

Олимпиада по программированию


На АСМ-олимпиаду прибыло [latex]N[/latex] участников. В результате анкетированные члены жури установили, что [latex]A[/latex] участников программируют на Cи, [latex]B[/latex] на Python, [latex]C[/latex] на Pascal, [latex]X[/latex] одновременно знают Cи и Python, [latex]Y[/latex] — Python и Pascal, [latex]Z[/latex] — Cи и Pascal. Имея значения [latex]N, A, B, C, X, Y, Z[/latex] установите количество участников, которые программируют на трёх языках программирования.

Входные данные

В одной строке через пробел сем действительных чисел [latex]N, A, B, C, X, Y, Z[/latex] значения которых не превышают [latex]100[/latex].

Выходные данные

Единственное число – количество участников, которые программируют на трёх языках программирования.

Тесты

# ВХОДНЫЕ ДАННЫЕ ВЫХОДНЫЕ ДАННЫЕ
1 100 40 50 60 15 20 25 10
2 100 50 60 60 20 40 25 15
3 80 50 40 60 20 30 25 5
4 80 50 40 60 0 0 0 0
5 40 20 30 0 5 0 10 5

Код программы:

Решение задачи:

Алгоритм решения данной задачи состоит в том, чтоб найти разность между числом участников, что одновременно знают по два языка $(X + Y + Z)$, и числом, что показывает на сколько языков больше чем людей (разностью между общим количеством языков и участников) $(A + B + C — N)$. Тем самым, мы найдем количество людей, которые знают одновременно 3 языка. Его также можно объяснить используя диаграмму Эйлера-Венна, на которой отмечено семь областей.  Из условия следует, что:

$\begin {cases} x_1 &+ &x_2 &+ &x_3 &+ &x_4 &+ &x_5 &+ &x_6 &+ &x_7 &=N \newline x_1 &+ & & & &&x_4 &+ & & &x_6 &+ &x_7 &=A \newline & & &&x_3 &+ &x_4 &+ &x_5 &+ & & &x_7 &=B\newline & &x_2 &+ & & & & &x_5 &+ &x_6 &+ &x_7 &=C \newline & & &&& &x_4 && &&  &+ &x_7 &=X \newline & & & & && & &x_5 & & &+ &x_7 &=Y \newline  & & & & & & & & & &x_6 &+ &x_7 &=Z \end{cases}$

Нам нужно найти количество участников в [latex]x_7[/latex] области (области одновременного пересечения всех трех кругов). И получается, что:

$(X + Y + Z)-(A + B + C — N)=x_7$

Если же после ввода данных, окажется, что количество людей знающих два языка равно нулю $(X + Y + Z == 0)$, то программа выведет, что людей знающих одновременно три языка также нет.

 

e-olymp 3609. Стартовая скорость

Задача

Кристина Стуй, Олеся Повх, Елизавета Брызгина, Мария Ремень

Женская олимпийская сборная Украины в эстафете 4×100 метров на олимпийских играх в Лондоне в составе (Кристина Стуй, Олеся Повх, Елизавета Брызгина, Мария Ремень)


Несмотря на то, что женская сборная Украины в эстафете [latex]4 \times 100[/latex] метров на олимпийских играх в Лондоне в составе Кристины Стуй, Олеси Повх, Елизаветы Брызгиной и Марии Ремень выступила очень достойно и завоевала бронзовые медали, подобная мысль назойливо мучила и программиста Васю.

Как показали тщательные экспериментальные проверки, модель, построенная им в задаче «Крейсерская скорость» оказалась не совсем точной. Многочасовые наблюдения, проведённые им на тренировках как украинских спортсменок, так и спринтеров из других стран, показали, что некоторые спортсмены во время старта разгоняются, а некоторые притормаживают. Но всё равно, после [latex]25[/latex] стартовых метров дистанции они движутся далее равномерно.

Феномен с «притормаживанием» Васе удалось с точки зрения физики пояснить довольно просто. Во время старта каждый из спортсменов имеет некоторую стартовую скорость, приобретённую в результате мощного отталкивания от стартовых колодок. Эта скорость может быть либо меньше «крейсерской», либо больше. В первом случае спортсмену нужно работать над наращиванием мышц ног для увеличения силы отталкивания. Во втором – мышцы уже наращены, но в результате того, что сила сопротивления воздуха зависит от площади соприкосновения тела спортсмена с ним, во время распрямления спортсмена во время старта эта сила сопротивления возрастает и становится постоянной только после указанных выше [latex]25[/latex] стартовых метров дистанции.

Обрадованный тем, что ему удалось найти разумное объяснение разным стартовым скоростям легкоатлетов, Вася решил узнать скорость каждого из них сразу после отталкивания от стартовых колодок.

Ваша задача помочь в этом Васе, считая, что на первых [latex]25[/latex] метрах дистанции движение легкоатлета является равноускоренным, независимо от того, ускоряется он или замедляется.

Входные данные

В единственной строке задано [latex]2[/latex] вещественных числа, разделённых единичным пробелом, соответственно результат спортсмена на дистанциях [latex]100[/latex] и [latex]200[/latex] метров.

Выходные данные

В единственной строке выведите стартовую скорость спортсмена с точностью не менее [latex]6[/latex]-ти знаков после запятой.

Тесты

Входные данные Выходные данные
[latex]9.63[/latex] [latex]19.32[/latex] [latex]10.844104[/latex]
[latex]9.77[/latex] [latex]19.59[/latex] [latex]10.606721[/latex]
[latex]9.69[/latex] [latex]19.40[/latex] [latex]10.469771[/latex]
[latex]10.02[/latex] [latex]20.12[/latex] [latex]10.548908[/latex]
[latex]9.88[/latex] [latex]19.85[/latex] [latex]10.781564[/latex]

Код программы

Решение задачи

Со школы знаем формулу скорости, [latex]v=\frac{l}{t}[/latex]. Найдем из неё [latex]l=vt[/latex].
Пусть [latex]l_1[/latex] и [latex]l_2[/latex] — это расстояния, на которых спортсмен бежит с «крейсерской» скоростью соотвественно на дистанциях в [latex]100[/latex] и [latex]200[/latex] метров, где [latex]l_1=l-l_p[/latex], где [latex]l[/latex] — это длина дистанции, а [latex]l_p[/latex] — длина разгона (известно из условия задачи). Аналогично для [latex]l_2[/latex]. Заменим [latex]t[/latex] на [latex]t_1-t_p[/latex], где [latex]t_1[/latex] — время, за которое спортсмен пробегает всю дистанцию, а [latex]t_p[/latex] — время разгона на первых [latex]25[/latex]-ти метрах дистанции. Получаем формулы: [latex]l_1=v(t_1-t_p)[/latex] и [latex]l_2=v(t_2-t_p)[/latex]. Из отношения этих формул [latex]\frac {l_1}{l_2}=\frac {v(t_1-t_p)}{v(t_2-t_p)}[/latex], найдем [latex]t_p[/latex]. Имеем [latex]t_p=\frac{l_1t_2-l_2t_1}{l_2-l_1}[/latex]. Подставляем [latex]l_1=v(t_1-t_p)[/latex]. Находим «крейсерскую» скорость спортсмена, [latex]v=\frac{l_1}{t_1-t_p}[/latex]. Из уравнения равноускоренного движения
[latex]x=v_0t \times \frac{at^2}{2}[/latex], где [latex]x=25[/latex] метров (длина разгона). Находим [latex]v_0[/latex] — это и есть стартовая скорость спортсмена. Для этого заменим [latex]a[/latex] на [latex]\frac{v-v_0}{t_p}[/latex]. Приводим подобные и выражаем [latex]v_0[/latex]. В итоге получаем формулу стартовой скорости спортсмена, [latex]v_0=\frac{50-vt_p}{t_p}[/latex]. Задача решена.

Ссылки

Условие задачи на e-olymp
Код решения на ideone.com

e-olymp 125. Олимпиада

Условие

Олимпиада началась в [latex]h_1[/latex] часов [latex]m_1[/latex] минут [latex]s_1[/latex] секунд, а закончилась в эти же календарные сутки в [latex]h_2[/latex] часов [latex]m_2[/latex] минут [latex]s_2[/latex] секунд. Сколько времени (час мин сек) проходила олимпиада?

Входные данные

В первой строке записано время начала, а во второй время окончания олимпиады в формате час мин сек.

[latex]0 \le h_1 \le h_2 \le 23[/latex], [latex]0 \le m_1, m_2 \le 59[/latex], [latex]0 \le s_1, s_2 \le 59[/latex].

Выходные данные

В единственную строку выходного файла нужно записать время продолжительности олимпиады в формате час мин сек.

Тестирование

Входные данные Выходные данные
1 9 30 0

12 45 30

3 15 30
2 9 30 30

12 45 0

3 14 30
3 9 45 0

12 30 30

2 45 30
4 9 45 30

12 30 0

2 44 30

Код

Решение

Очевидным решением задачи является вывод через пропуск разниц  [latex]h_2 — h_1[/latex], [latex]m_2 — m_1[/latex] и [latex]s_2 — s_1[/latex]. Однако если часы, минуты или секунды конца олимпиады будут меньше соответсвующих значений ее начала, то результат разницы разницы будет отрицательным. Чтобы этого избежать, существуют два if-блока, которые увеличивают количество секунд на [latex]60[/latex] и уменьшают количество минут на [latex]1[/latex], а так же выполняют аналогичные действия с минутами и часами в том случае, если входное количество минут или секунд начала олимпиады будут превышать соответственно минуты и секунды конца. После этого выводятся разницы, указанные в начале решения, которые теперь будут отображать реальную продолжительность олимпиады и гарантированно будут неотрицательными.

Ссылки

Условие задачи на E-Olymp;

Код программы на Ideone.com;

Подтверждение решения на E-Olymp.