ML13. Площадь равностороннего треугольника

Постановка задачи

Дана сторона равностороннего треугольника. Найти площадь этого треугольника.

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

Сторона равностороннего треугольника [latex]a[/latex]

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

Площадь равностороннего треугольника [latex]S[/latex]

Тесты

Входные данные Выходные данные
1 4 6.928
2 3 3.897
3 6 15.588

Ссылка на результат теста на wolframalpha.com

Решение

Для проверки работы программы можно воспользоваться онлайн компилятором Ideone.com

Описание решения

Для нахождения площади равностороннего треугольника будем использовать формулу [latex]S = \frac{a^2\sqrt{3}}{4}[/latex]. Чтобы найти корень, используем функцию Math.sqrt(). На экран выводим площадь треугольника.

e-olymp 7336. Пирожки

Постановка задачи

Пирожок в столовой стоит [latex]a[/latex] гривен и [latex]b[/latex] копеек. Найдите, сколько гривен и копеек заплатил Петя за [latex]n[/latex] пирожков.

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

Три натуральных числа [latex] a, b, n[/latex] [latex](0\leq a, b, n \leq100)[/latex]

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

Через пропуск два числа: стоимость покупки в гривнах и копейках.

Тесты

Входные данные Выходные данные
1 5      9     2 10     18
2 0     15     18 2     70
3 5     25     0 0     0

Решение

Описание решения

Для объявления переменных a,b,n и total используем тип int, так как эти числа являются натуральными. Для простоты подсчета переводим сумму в копейки; так как в одной гривне 100 копеек, количество гривен мы умножаем на 100, прибавляем количество копеек, а затем умножаем получившуюся сумму в копейках на количество пирожков. Отсюда формула: total = (a*100 + b)*n.

В результате получаем число, в котором две последние цифры — это количество копеек, а остальные — количество гривен. Выводим их на экран с помощью соответствующих операций деления total/100 для гривен и деления по модулю total%100 для копеек.

Посмотреть решение задания можно на сайте e-olymp.

Посмотреть, как работает программа со входными данными 5, 9, 2 можно на сайте ideone.

ML36. Движение катера

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

Катер движется по течению реки из пункта A в пункт B и обратно с собственной скоростью $latex v$ км/час. Скорость течения постоянна — $latex u$ км/час. Расстояние между пунктами составляет $latex s$ км. Для любых действительных неотрицательных значений расстояния и скоростей вычислить время в пути $latex t_{boat}$.

Тесты

Входные данные: физические величины $latex v$, $latex u$, $latex s$

Выходные данные: физическая величина $latex t_{boat}$

Входные данные Выходные данные
1 3 2 10 12.0
2 1.4 0.4 3.6 5.6
3 3 6 10 Infinity
4 2 1 0 0.0

Код

Код доступен на ideone

Пояснение

Скорость катера, когда он идет по течению, равна $latex (v+u)$, а когда против — $latex (v-u)$. Время $latex t$ вычисляется по формуле $latex t = \frac{s}{v}\\ $, где $latex s$ — расстояние, $latex v$ — скорость, соответственно общее время  пути катера составит  $latex t_{boat} = {\frac{s}{v+u}\\+\frac{s}{v-u}\\} $. При этом время — величина неотрицательная, а делитель дроби не должен быть нулевым, соответственно имеем ограничение $latex v-u > 0, v > u $.

 

ML2

Задача

Даны действительные числа [latex]x[/latex] и [latex]y[/latex]. Получить [latex]\frac{|x|-|y|}{|x|+|y|}[/latex].

Тесты

Входные данные Выходные данные
 1            3        7                 -0.4
 2           -5      -2              0.4285
 3           -6       4                  0.2
 4            2       -3                 -0.2

Решение

Проверить работу кода можно в облаке по ссылке — http://ideone.com/h12CNL

Пояснения 

Используя тип double объявляем переменные x, y и  solution. После, инициализируем переменные  x и  y значениями из потока ввода. Далее, находим решение нашего выражения при использовании метода  abs() библиотеки Math. Решение присваиваем ранее объявленной переменной solution, после чего выводим его в консоль.

ML4. Линейные вычисления

Условие
Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

Тесты

Входные данные Выходные данные
1 -1 -3 -2 1.73205
2 5 6 5.5 5.47723
3 4 6 5 4.89898
4 100 2.6 51.3 16.1245
Решение
Так как нам в задаче не указано какой длины будут числа, мы используем тип данных long double, который поможет охватить весь их диапазон. Для того, чтобы найти среднее арифметическое чисел нам нужно воспользоваться формулой: $latex A=\frac{x_1+x_2+ \ldots +x_n}{n}$, но так как у нас задано всего два числа, будем пользоваться этой формулой: $latex A= \frac{a+b}{2}$. Среднее геометрическое вычисляется по формуле: $latex G=\sqrt[n]{x_1+x_2+ \ldots +x_n}$, но нам понадобиться формула только для двух чисел: $latex G=\sqrt{a . b}$

Ideone.com

KM31. Бумажные многоугольники

Задача

Задача из журнала «Квант» №7 1970 г.
Квадратный лист бумаги разрезают по прямой на две части. Одну из полученных частей снова разрезают на две части, и так делают много раз. Какое наименьшее число разрезов r нужно сделать, чтобы среди полученных частей оказалось n k -угольников?

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

Количество многоугольников n.
Количество углов многоугольника k.

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

Количество разрезов r.

Пример получения двух шестиугольников за 5 разрезов

Тесты

 Входные данные  Выходные данные
 №  n  k  r
 1  100  20  1699
 2  14  3  13
 3  1  3  1
 4  40  360  14279
 5  2  6  5

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

 

Решение

При каждом разрезе количество кусков бумаги nувеличивается на 1. Общее количество вершин k будет увеличиваться в зависимости от места разреза. Таким образом при разрезе через две стороны общее количество вершин будет увеличиваться на 4. При разрезе через две вершины общее количество вершин увеличивается на 2, а при разрезе через сторону и вершину — на 3.

При k>3 сначала разделим лист на nчетырёхугольников при помощи разрезов через противоположные стороны. На это нам понадобиться n-1 разрезов. Затем можем, при помощи разрезов через соседние стороны, превращать каждый четырехугольник в k — угольник, на что понадобиться k-4 разрезов.Выходит, что на получение n k— угольников нужно сделать не меньше n(k-4)+n-1 разрезов, значит r=n(k-3)-1.

Если же k=3, то нам нужно, наоборот, уменьшить количество вершин. Тогда первый разрез сделаем через две вершины квадрата — получаем два треугольника, затем каждым разрезом через вершину и сторону увеличиваем количество треугольников на 1 пока не получим n. В таком случае r= n-1 . Исключение: если n=1, то r=1.

Ссылка на Ideone

http://ideone.com/X0D8jF

ML14

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

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

Длина нити маятника [latex]l.[/latex]

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

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

Тесты

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

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

Пояснение

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

Ссылка на ideone

Квадрат и точки

Постановка задачи

Какое наибольшее количество точек с целочисельными координатами на листке в клеточку можно накрыть квадратом со стороной N клеток?

Алгоритм решения

Решения задачи сводится к нахождению площади квадрата, сторона которого на единицу больше исходного.

Тесты

 1 4
 2 9
 3 16
 4 25

Реализация

ideone: ссылка
Засчитаное решение на e-olymp: ссылка

 

ML 22

Задача взята тут

Найти площадь равнобедренной трапеции с основаниями [latex]a[/latex] и [latex]b[/latex] и углом [latex]\alpha[/latex] при большем основании [latex]a[/latex].

Тесты

a    b [latex]\alpha[/latex]    Square
15 10 0,785398 31.25
20 5 1.0472 162.38
30 20 0.523599 72.1687

Решение

Для нахождения площади трапеции используется формула: [latex]hm[/latex], где [latex]m[/latex] средняя линия, [latex]h[/latex] высота. [latex]h[/latex] находится как [latex]\tan \alpha \cdot \frac {(a-b)}{2}[/latex] , [latex]m[/latex] находится как [latex]\frac{(a-b)}{2}[/latex].

Код

Решение на Ideone

ML10. Найти сопротивление цепи

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

Три сопротивления {R}_{1}{,R}_{2},{{R}_{3}} соединены параллельно. Найти сопротивление цепи.
Входные данные:

Пользователь задает три числа — сопротивления трех резисторов.

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

Выводится число — общее сопротивление цепи.

Тесты:

Входные данные Выходные данные
1 2 3 4 0.923077
2 3 0 5 0.000000
3 4.4 5.5 6.6 1.783784
4 10 20 30 5.454545

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

 Алгоритм решения:

Сначала задаем три числа — сопротивления трех резисторов. Находим общее сопротивление цепи по формуле [latex]\frac{1}{R} = \frac{1}{R1} + \frac{1}{R2} + \frac{1}{R3}[/latex]. После этого печатается ответ.

Работающая версия программы на ideone.com