e-olimp 248. Юный садовод

Задача взята с сайта e-olymp.com.

Условие задачи

Мама попросила Васю полить все молодые деревца в саду. Вася знает, что пока деревья маленькие, их надо очень хорошо поливать. А вот сколько поливать — неизвестно. Но Вася — очень умный мальчик. Он внимательно прочитал весь учебник ботаники для средней школы и выяснил, что полив прямо пропорционален количеству листьев на дереве. Для хорошего роста деревьев достаточно выливать под дерево ежедневно по одному литру воды на каждый лист.

К счастью Васи оказалось, что листья на деревьях растут ярусами, причем на верхнем ярусе два листа, на втором — четыре, на следующем — шесть, и так далее, на каждом последующем ярусе на два листа больше по сравнению с предыдущим. А на самой верхушке растет еще один листик. Хитрый Вася послал младшую сестренку Машеньку подсчитать количество ярусов на каждом дереве, а Вас просит написать программу, которая для каждого дерева вычислит количество литров воды для его полива.

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

Количество ярусов [latex] n  (0 ≤ n ≤ 1000) [/latex] на дереве.

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

Вывести количество литров воды для полива этого дерева.

Тесты

Входные данные Выходные данные
1. 2 7
2. 5 31
3. 0 1
4. 70 4971

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

Решение

Как можно было заметить, по условию нашей задачи, на каждом следующем уровне на 2 листа больше чем на предыдущем. Поэтому для ее решения мы можем воспользоваться формулой суммы [latex]n[/latex]-первых членов арифметической прогрессии, и в конце расчетов добавить к полученной сумме единицу (тот самый листик с верхушки). Тогда подставив [latex] d = 2 , a_1 = 2, n = n [/latex]. Мы получим формулу [latex] S_n = \frac{2a_1 + (n — 1)d}{2} \cdot n \to n^2 + n [/latex].

 

Оригинальное решение: cpp.mazurok.com.
Рабочий код для тестирования на try.haxe.org: Try Haxe !

e-olymp 6277. Покупка воды

Ссылка на оригинальную статью
Ссылка на e-olymp.com.

Задача
Стоимость бутылки воды, учитывая стоимость пустой бутылки, составляет $1$ грн $20$ коп., а стоимость пустой бутылки $20$ коп.
Сколько бутылок воды можно выпить на $n$ грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобретать новые бутылки воды.

Входные данные
Натуральное число $n$ $(1≤n≤1000)$.

Выходные данные
Количество бутылок воды, которое можно выпить на $n$ грн.

Примечание: Вода без бутылки не продаётся.

Тесты

Входные данные Выходные данные
1 0,7 0
2 2 1
3 10 9
4 999 998

Код

Решение
Вводим переменную $n$ равную числу заданных денег. Так как при покупки и возвращении бутылки тратится $1$ грн, количество купленной воды будет на одну меньше, чем количества купюр. Чтобы «избавиться» от монет (десятичной части числа) при получении количества бутылок воды, округляем конвертируем переменную в целочисленный тип с округлением в сторону $0$.

Альтернативный вариант

Решение
Вводим переменную $n$ равную числу заданных денег и счетчик купленной воды. В цикле отнимаем от переменной $1$, так как при возвращении бутылки тратится лишь $1$ грн, а счетчик купленной воды увеличиваем на $1$.

ML21

Просмотреть рабочий код можно здесь
Ссылка на задачу, решённую на С++
Задача. Найти сумму членов арифметической прогрессии $a, a + d, a + 2d, \dots, a + (n — 1)d$ по заданным значениям $a$, $d$ и $n$

Тесты

$a$ $d$ $n$ $S_{n}$
8 657 0 0
5 0 2 10
2 2 2 6
5 8 1 5
0 5565 88 21302776

Код

Алгоритм

Для выполнения задачи была использована формула суммы арифметической прогрессии — [latex] S_{n} = \frac{2a_{1} + d(n — 1)}{2} * n [/latex]. $a_{1}$ — первый член арифметической прогрессии, $d$ — разница арифметической прогрессии и $n$ — номер последнего члена суммы. В выходной поток подаётся результат вычислений по данной формуле

e-olymp 57. Бабочка-санитар

Задача взята с сайта e-olymp.com.
Решение на с++

Условие

Школьники, идя из дому в школу или наоборот — со школы домой, любят кушать конфеты. Но, как всегда, это приятное дело иногда имеет неприятные последствия – детки часто выбрасывают обертки на школьном дворе.

Мурзик всегда следил за чистотой школьного двора и ему в этом с радостью помогали бабочки, благодарные за прекрасные фотографии, сделанные им. Бабочки могли использовать собственные крылышки как линзы, причем они могли изменять их фокусное расстояние. Заметив обертку от конфетки, лежавшую на школьном дворе в точке с координатами [latex]X_1[/latex], [latex]Y_1[/latex], бабочка перелетала в точку с координатами [latex]X_2[/latex], [latex]Y_2[/latex], [latex]Z_2[/latex], расположенную на пути солнечных лучей к обертке и, изменяя фокусное расстояние своих крылышек-линз, сжигали обертку от конфеты.

Какую оптическую силу [latex]D[/latex] имели крылышки-линзы бабочки в этот момент?

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

В первой строке 2 числа: координаты [latex]X_1[/latex], [latex]Y_1[/latex] обертки от конфетки. Во второй – 3 числа: координаты [latex]X_2[/latex], [latex]Y_2[/latex], [latex]Z_2[/latex] бабочки в момент сжигания обертки.

Все входные данные целые числа, не превышающие по модулю 1000.

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

Единственное число – оптическая сила крылышек-линз [latex]D[/latex].

Код

Ход решения:

Вычисляем оптическую силу линзы [latex]D[/latex] по формуле [latex]D=\frac{1}{f}
[/latex], где [latex]f[/latex] — расстояние между бабочкой и обёрткой. Вычисляем его по формуле: [latex]f =
\sqrt{(X_2-X_1)^2+(Y_2-Y_1)^2+Z_2^2}[/latex].

ML25. Расстояние между двумя точками

Задача

Вычислить расстояние между двумя точками [latex]A(x_a,y_a,z_a)[/latex] и [latex] B(x_b,y_b,z_b)[/latex] по известным координатам.

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

Координаты: [latex]x_a,y_a,z_a,x_b,y_b,z_b.[/latex]

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

[latex]|AB|[/latex]— расстояние между точками [latex]A[/latex] и [latex]B[/latex]

Тесты

[latex]x_a[/latex] [latex]y_a[/latex] [latex]z_a[/latex] [latex]x_b[/latex] [latex]y_b[/latex] [latex]z_b[/latex] [latex]|AB|[/latex]
0 1 0 1 0 1 1.73205
0 0 0 0 0 0 0
6 6 4 4 2 8 6

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

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

Вычисляем [latex]|AB|[/latex] между точками [latex]A(x_a,y_a,z_a)[/latex] и [latex] B(x_b,y_b,z_b)[/latex] по такой формуле : [latex]|AB|[/latex]=[latex]\sqrt{(x_b-x_a)^2+(y_b-y_a)^2+(z_b-z_a)^2}[/latex] и получаем результаты.

ссылка на try.haxe.org

e-olymp 57. Butterfly-orderly

Задача взята с сайта e-olymp.com.

Условие

Школьники, идя из дому в школу или наоборот – со школы домой, любят кушать конфеты. Но, как всегда, это приятное дело иногда имеет неприятные последствия – детки часто выбрасывают обертки на школьном дворе.

Мурзик всегда следил за чистотой школьного двора и ему в этом с радостью помогали бабочки, благодарные за прекрасные фотографии, сделанные им. Бабочки могли использовать собственные крылышки как линзы, причем они могли изменять их фокусное расстояние. Заметив обертку от конфетки, лежавшую на школьном дворе в точке с координатами X_1, Y_1, бабочка перелетала в точку с координатами X_2, Y_2, Z_2, расположенную на пути солнечных лучей к обертке и, изменяя фокусное расстояние своих крылышек-линз, сжигали обертку от конфеты.

Какую оптическую силу D имели крылышки-линзы бабочки в этот момент?

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

В первой строке 2 числа: координаты X_1, Y_1, обертки от конфетки. Во второй – 3 числа: координаты X_2, Y_2, Z_2 бабочки в момент сжигания обертки.

Все входные данные — целые числа, не превышающие по модулю 1000.

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

Единственное число – оптическая сила крылышек-линз D, вычисленная с точностью до 3-х знаков после запятой по правилам математических округлений.

Тесты:

X_1 Y_1 X_2 Y_2 Z_2 D
10 20 10 20 100 0.010
10 30 10 30 50 0.020
10 30 20 40 110 0.009

Код на Haxe:

Ход решения:

Вычисляем оптическую силу линзы D по формуле D = \frac{1}{f}, где f – расстояние между бабочкой и обёрткой. вычисляем его по формуле: f = \sqrt{(X_2-X_1)^2+(Y_2-Y_1)^2+Z_2^2}. Вычисление в одну строку:

Далее выводим на экран:

Примечание: Входные данные для тестирования были заданы программно из-за определенных затруднений при использовании стандартного ввода.

Ссылки:

Рабочий код для тестирования на try.haxe.org: Try Haxe !