e-olymp 1474. Сломанные часы

Задача

Broken Clocks

В электронных часах произошел сбой, и теперь каждую секунду увеличивается не счетчик секунд, а счетчик часов. При переполнении счетчика часов (то есть при достижении $24$) он сбрасывается в $0$ и увеличивается счетчик минут. Аналогично, при переполнении счетчика минут происходит его сброс и увеличивается счетчик секунд. При переполнении счетчика секунд он также сбрасывается в $0$, а остальные счетчики так и остаются равными $0$. Известно, что сбой произошел в $h_1$ часов $m_1$ минут $s_1$ секунд. В этот момент часы показывали правильное время.

Напишите программу, определяющую по показаниям сломанных часов правильное время.

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

В первой строке задаются три целых числа $h_1$, $m_1$, $s_1$, определяющие время поломки часов. Во второй строке записаны три числа $h_2$, $m_2$, $s_2$, которые определяют показания часов в текущий момент времени ( $0\;\le\;h_1,\;h_2\;\lt\;24$, $0\;\le m_1,\;m_2,\;s_1,\;s_2\;\lt\;60$ ).

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

В единственной строке выведите правильное время (т.е. число часов, минут и секунд) в момент, когда сломанные часы будут показывать $h_2$ часов $m_2$ минут $s_2$ секунд.

Тесты

Входные данные Выходные данные
$12\;0\;0$
$12\;1\;0$
$12\;0\;24$
$13\;59\;59$
$12\;59\;59$
$13\;59\;58$
$15\;12\;16$
$15\;12\;16$
$15\;12\;16$
$0\;0\;0$
$23\;59\;59$
$23\;59\;59$
$16\;0\;17$
$16\;0\;18$
$16\;24\;17$
$11\;0\;53$
$0\;0\;0$
$13\;48\;42$
$1\;13\;18$
$22\;51\;32$
$7\;4\;51$

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

Решение

Учитывая особенности хода сломанных часов, подсчитаем количество секунд в начальный и конечный моменты времени (  sum1  и sum2 ). Вычислим, сколько секунд прошло с момента поломки часов — для этого найдём разность sum2 - sum1 , прибавим $86400$ —  количество секунд в сутках (поскольку мог произойти переход через момент времени $0\; : \;0\; : \;0$) и найдём остаток от деления полученной суммы на $86400$.

Теперь найдём количество секунд, прошедших с начала суток, в которых поломались часы ( time1 ). Прибавим к нему количество секунд, прошедших с момента поломки часов и найдём остаток от деления на $86400$ полученного числа. Имеем  time2  — правильное время в секундах. Далее, находим значения счётчиков часов $h_3$, минут $m_3$ и секунд $s_3$ которые соответствуют моменту времени  time2.

Ссылки

Условие задачи на e-olymp
Решение на ideone
Решение на e-olymp

ML 24

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

Треугольник задан длинами сторон. Найти радиус вписанной [latex]r[/latex] и описанной [latex]R[/latex] окружностей.

Тесты:

[latex]a[/latex] [latex]b[/latex] [latex]c[/latex] [latex]r[/latex] [latex]R[/latex]
3 4 5 1 2.5
7.5 10 13 2.45012 6.52361
1 3 4 0 inf
1 1 3 Не существует! Не существует!

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

 

Алгоритм:

Проводим следующие вычисления (порядок сохранен):

  1. Вычисляем полупериметр [latex]p[/latex] треугольника: [latex]p[/latex] = [latex]\frac{a + b + c}{2}[/latex]
  2. Находим площадь [latex]S[/latex] по формуле Герона: [latex]S[/latex] = [latex]\sqrt{p(p-a)(p-b)(p-c)}[/latex]
  3. Вычисляем радиус [latex]r[/latex] вписанной окружности по формуле: [latex]r[/latex] = [latex]\frac{S}{p}[/latex]
  4. Вычисляем радиус [latex]R[/latex] описанной окружности по формуле: [latex]R[/latex] = [latex]\frac{abc}{4S}[/latex]

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

Ссылка на источник

e-olymp 935. Разложение три цифрового числа

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

Разложить заданное трицифровое число на цифры.

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

В единственной строке задано целое трицифровое число.

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

Вывести каждую цифру в новой строке. Порядок вывода приведён в примере.

Тесты

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

3

5

2 267 2

6

7

3 -178 1

7

8

Код

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

Для начала задаем переменную(a) в которой будет трехзначное число, которое мы вводим с клавиатуры. Затем проверяем: отрицательное или положительное это число. Для того чтобы получить первую цифру этого числа воспользуемся простой формулой $latex a/100$ , вторую цифру по формуле — (a / 10) % 10, и третью a % 10.

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

ML7

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

Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.

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

Катеты прямоугольного треугольника — [latex]a[/latex] и [latex]b[/latex]

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

Площадь прямоугольного треугольника — [latex]area[/latex]

Гипотенуза прямоугольного треугольника — [latex]c[/latex]

Тесты

Входные данные Выходные данные
1 8 6 24 10
2 4 3 6 5
3 3 6 9 6.70

Решение:

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

Объявляем переменные  a, b, c, area типа  double , где  a, b  — катеты прямоугольного треугольника,  c  — гипотенуза, а  area  — площадь треугольника. Далее с клавиатуры вводим значения катетов прямоугольного треугольника. После чего по формуле площади треугольника и теореме Пифагора вычисляем площадь и гипотенузу треугольника. Для возведения в степень 2, будем использовать функцию  Math.pow() , для нахождения корня  Math.pow() .  В результате выводим значения площади  area  и гипотенузы  c  с помощью функции  System.out.println() .

KM17. Крестьянин на развилке

Задача из журнала «Квант» №4 1970 г.

Крестьянин, подойдя к развилке двух дорог, расходящихся под углом 60°, спросил: «Как пройти в село [latex]NN[/latex]?». Ему ответили: «Иди по левой дороге до деревни [latex]N[/latex] — это в восьми верстах отсюда,— там увидишь, что направо под прямым углом отходит большая ровная дорога,— это как раз дорога в [latex]NN[/latex]. А можешь идти другим путём: сейчас по правой дороге; как выйдешь к железной дороге,— значит, половину пути прошёл; тут поверни налево и иди прямо по шпалам до самого [latex]NN[/latex]». — «Ну, а какой путь короче-то будет?» — «Да всё равно, что так, что этак, никакой разницы.» И пошёл крестьянин по правой дороге. Сколько вёрст ему придётся идти до [latex]NN[/latex]? Больше десяти или меньше? А если идти от развилки до [latex]NN[/latex] напрямик? (Все дороги прямые)

Более лаконичная версия:
Крестьянин стоит на развилке дорог, которые расходятся под углом 60°, и хочет попасть в село [latex]NN[/latex]. Выбрав левую дорогу, он должен будет пройти n вёрст прямо, затем повернуть направо под прямым углом и идти до [latex]NN[/latex]. Выбрав правую, он должен будет преодолеть участок некоторой длины прямо, затем повернуть налево и пройти такой же по длине участок. При этом известно, что длины левой и правой дорог одинаковы. От нас требуется найти длину пути по одной из дорог и длину пути напрямик.

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

Длина пути от развилки до [latex]N[/latex].

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

Длины путей по дороге и напрямик.

Тесты

Входные данные Выходные данные
[latex]n[/latex] [latex]{ s }_{ 1 }[/latex] [latex]{ s }_{ 2 }[/latex]
1 0 0 0
2 8 11.0416 8.55871
3 0.5 0.690101 0.534919
4 21 28.9843 22.4666
5 13.45 18.5637 14.3893

Решение

Код можно увидеть и проверить его правильность тут: ideone

Пояснение

Обозначим развилку как [latex]A[/latex] как, село [latex]B[/latex], место пересечения правой дороги с рельсами как [latex]D[/latex], и проведём [latex]DH \bot AB[/latex] и [latex]DK \bot BC[/latex].

Пусть [latex]AD = 2x[/latex], тогда  [latex]AH = x[/latex]; Из треугольника [latex]AHD[/latex]: [latex]BK = DH = x\cdot\sqrt { 3 }[/latex];

[latex]KC=KB-BC=n+x \cdot \left(\sqrt{3}-4\right)[/latex].
Из треугольника [latex]CKD[/latex] по теореме Пифагора: [latex]{KC}^{2}+{KD}^{2}={CD}^{2}[/latex]. Подставив значения, раскрыв скобки и проведя математические преобразования, получим квадратное уравнение [latex]{x}^{2}\cdot (-4\sqrt{3}+8)-x \cdot n \cdot (\sqrt{3}-5)+{n}^{2}=0[/latex].
Найдём дискриминант [latex]D={n}^{2}\cdot(6\sqrt{3}-4)[/latex]. [latex]KD=n-x[/latex] и [latex]KD > 0[/latex], значит, [latex]n-x > 0[/latex] и [latex]x < n[/latex]. Для первого из корней полученного квадратного уравнения это условие не выполняется, соответственно, мы имеем лишь один корень. Найдя его, мы найдём половину длины [latex]AD[/latex]. Выведем формулу для его расчёта:[latex]x=\frac{n\cdot(5-\sqrt{3}-\sqrt {6\cdot\sqrt {3}-4 })}{8\cdot (2-\sqrt {3})}[/latex] Тогда длина пути по дороге будет равна [latex]4\cdot x[/latex], а длину пути напрямик мы найдём из треугольника [latex]ABC[/latex] по теореме Пифагора: [latex]{s}_{2}=\sqrt{2\cdot ({n}^{2}-4x\cdot n+8{n}^{2})}[/latex].

e-olymp 906. Произведение цифр

Задача взята с сайта e-olimp

Условие

Задано трицифровое число. Определить произведение его цифр.

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

В единственной строке заданное трицифровое число.

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

В единственной строке произведение цифр заданного числа.

Тесты

# Входные данные Результат
1 235 30
2 106 0
3 111 1

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

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

Для разбиения на цифры воспользуемся формулой:

В данной формуле в первом множителе мы получаем первую цифру, во втором — вторую, и в третьем соответственно третью.

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.