ML14

Задача. Вычислить период колебания маятника длины l.

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

Длина нити маятника l.

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

Период колебаний маятника.

Тесты

Входные данные Выходные данные
1 0,3 1.09891
2 1 2.00632
3 40 12.6891

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

 

Решение

Условием задачи было вычислить период колебаний маятника T, имея длину маятника l. Период колебаний маятника можно рассчитать с помощью формулы: T = 2\pi\sqrt{\frac{l}{g}}. Мы объявляем три переменные типа double T, l, g, где T-период колебаний маятника, l – длина маятника,  g9.8075 – ускорение свободного падения на поверхности Земли в Одессе.  l  – входной параметр. Затем, используя формулу T = 2\pi\sqrt{\frac{l}{g}}, вычисляем и выводим значение периода.

 

Решение на ideone.com

A71

Код на Ideone

Задача.

Дано действительное число [latex]a[/latex]. Вычислить  [latex]f(a)[/latex], где  [latex]f[/latex] – периодическая функция с периодом 1.5, совпадающая на отрезке  [latex][0;1.5][/latex] с функцией  [latex]x^3-2,25x[/latex].

Тесты:

[latex]a[/latex] [latex]f(a)[/latex] Комментарий
2.12 -1.15667 Тест пройден
-8 -1.25 Тест пройден
11.6 -1.14 Тест пройден
3.7 -1.232 Тест пройден

Код

Решение:

Мы просто приравниваем [latex]a[/latex] к остатку от деления числа [latex]a[/latex] на период [latex]p=1.5[/latex], таким образом мы сдвигаем [latex]a[/latex], влево на необходимое количествоp пока [latex]a[/latex] не попадет в отрезок [latex][0;1.5][/latex]. Если число [latex]a[/latex] принадлежит отрезку [latex][0;1.5][/latex], то по данному алгоритму число [latex]a[/latex] останется неизменным.

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

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

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

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

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

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

Количество ярусов n (0 \leq n \leq 1000) на дереве.

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

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

Тесты

Входные данные Выходные данные
1 3 13
2 0 1
3 50 2551
4 560 314161

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

www.ideone.com

Решение

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

e-olymp 57. Butterfly-orderly

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

Условие

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

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

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

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

В первой строке 2 числа: координаты X_1Y_1, обертки от конфетки. Во второй – 3 числа: координаты X_2Y_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

Код на Java:

Ход решения:

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

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

Ссылки:

Рабочий код для тестирования на Ideone.com: Ideone.com

e-olymp 67. New food for Anfisa – 2

Условие

При разрезании сыра в задаче «Сыр для Анфисы» у хозяина оставались куски сыра в виде прямоугольного параллелепипеда с разными целыми длинами сторон. Готовя новое блюдо из сыра для Анфисы хозяину приходилось разрезать эти куски на кубики со стороной 1. Какое наименьшее количество разрезов приходилось ему делать для того, чтобы разрезать заданные куски сыра, если он каждый раз разрезал один кусок сыра на две части.

Ссылка на задачу на e-olymp.
Ссылка на решение.

Решение

При разрезании сторон a, b, c мы получаем a, b, c количество частей соответственно. Следовательно, при разрезании стороны A, мы выполняем (a-1) разрезов. Тогда, при разрезании стороны B, делаем a*(b-1); при разрезании стороны C – a*b*(c-1) соответственно. Всего мы совершаем (a-1)+a*(b-1)+a*b*(c-1) разрезов. В итоге, получаем формулу a*b*c - 1.

Код

Просмотр на Ideone.

Тест

а b c Выходные данные
2 3 4 23

 

Задача жестянщика

Задание: Из круга радиуса [latex]r[/latex] вырезан прямоугольник, большая сторона которого равна [latex]a[/latex]. Найти максимальный радиус круга, который можно вырезать из полученного прямоугольника.

 

Тесты:
[latex]a[/latex] [latex]R[/latex] [latex]r[/latex]
4 2 3.8729835
2 [latex]2 \sqrt{2}[/latex] 1.4142135
5 5 4.3301272
 

Find the minimum of two numbers

Task. Were given two real numbers [latex]x[/latex] and [latex]y[/latex]. Find [latex]\min (x, y)[/latex].

Tests

Input Output
758 843 Maximum number is: 843
459 238 Maximum number is: 459

Solution

With if-statement

Code refactoring

Without if-statement

 

Find the minimum of three numbers

Task. Were given three real numbers [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Find [latex]\min (x, y, z)[/latex].

Tests

Input Output
7 8 9  7
8771 1346574 1131  1131

Solution

With if-statement

Code refactoring

Find the maximum of two numbers

Task. Were given two real numbers [latex]x[/latex] and [latex]y[/latex]. Find [latex]\max (x, y)[/latex].

Tests

Input Output
758 843 Maximum number is: 843
459 238 Maximum number is: 459

Solution

Сomparison

Task

In three-digit number find which digit is bigger — the most right or the most left. If all digits are equal, enter as an result the word «equals».

Similar task to this can be found here.

 

Tests

Try to find all possible combinations distributed by growing. Should be not less than 13 combinations.

Input Output
555  equals
554  5
545  equals
455  5
557  7
575  equals
755  7
321  3
312  3
231  3
213  3
123  3
132  3

Solution

With «if» statement:

Code refactoring