e-olymp 2612. Разрезание на квадраты

Задача

 

Полоска бумаги имеет размеры [latex]A×B[/latex]. Каждый раз от нее отрезается квадрат максимального размера до тех пор, пока не получится квадрат. Сколько квадратов получится?

 

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

Программе даны числа [latex]A[/latex] и [latex]B[/latex]
[latex](1 ≤ A, B ≤ 10^9)[/latex]

 

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

Требуется вывести количество квадратов.

 

Тесты

Входные данные Выходные данные
12 4 3
15 3 5
20 20 1
8 12 3

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

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

 

Нам было дана высота и ширина полоски бумаги. Есть три варианта:

  • Высота равна ширине
  • Высота больше ширины
  • Высота меньше ширины

В первом случае нам надо вывести на экран единицу. Во втором случаем начинаем вычитать a - b до того момента, как a не будет меньше b или a не будет равняться 0. В третьем случае начинаем вычитать b - a до того момента, как b не будет меньше a или b не будет равняться 0.

Ссылки

  • Задача на сайте e-olymp
  • Код решения в Ideone

e-olymp 7234. Кондиціонер Степана

Задача

В офісі, де Степан працює програмістом, встановили кондиціонер нового типу. Цей кондиціонер відрізняється особливою простотою в управлінні. У кондиціонера є всього лише два керованих параметра: бажана температура і режим роботи.

Кондиціонер може працювати в наступних чотирьох режимах:

  • «freeze» — охолодження. У цьому режимі кондиціонер може тільки зменшувати температуру. Якщо температура в кімнаті і так не більше бажаної, то він вимикається.
  • «heat» — нагрів. У цьому режимі кондиціонер може тільки збільшувати температуру. Якщо температура в кімнаті і так не менше бажаної, то він вимикається.
  • «auto» — автоматичний режим. У цьому режимі кондиціонер може як збільшувати, так і зменшувати температуру в кімнаті до бажаної.
  • «fan» — вентиляція. У цьому режимі кондиціонер здійснює тільки вентиляцію повітря і не змінює температуру в кімнаті.

Кондиціонер досить потужний, тому при налаштуванні на правильний режим роботи він за годину доводить температуру в кімнаті до бажаної.

Потрібно написати програму, яка по заданій температурі в кімнаті [latex]t_{room}[/latex], встановленим на кондиціонері бажаної температурі [latex]t_{cond}[/latex] і режиму роботи визначає температуру, яка встановиться в кімнаті через годину.

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

Перший рядок вхідного файлу містить два цілих числа [latex]t_{room}[/latex], і [latex]t_{cond}[/latex], розділених рівно одним пропуском [latex](-50 ≤ t_{room}. ≤ 50 [/latex],[latex]-50 ≤ t_{cond}. ≤ 50)[/latex]. Другий рядок містить одне слово, записане малими літерами латинського алфавіту — режим роботи кондиціонера.

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

Вихідний файл повинен містити одне ціле число — температуру, яка встановиться в кімнаті через годину.

Тесты

Входные данные Выходные данные
10 20 heat 20
10 20 freeze 10
20 10 auto 10
20 20 freeze 20

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

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

Для решения этой задачи я построил таблицу, в которой рассмотрел все возможные варианты.

Режим работы [latex]tr>tc[/latex] [latex]tr>tc[/latex] [latex]tr=tc[/latex]
freeze tc tr tc
heat tr tc tc
fan tr tr tr
auto tc tc tc

Из этой таблицы видно, что повторяется tc 7 раз, а tr — 5 раз. Поэтому опишем в операторе if все условия при которых температура в комнате будет равняться желаемой температуре через час, а во всех остальных случаях температура не изменится.

Ссылки

  • Задача на сайте e-olymp
  • Код решения в Ideone

e-olymp 3604. Крейсерская скорость

Задача

Выдающийся ямайский спринтер Усейн Болд выиграл на Олимпиаде-2012 две золотые медали на дистанциях 100 и 200 метров.

Эти обе дистанции нам интересны тем, что могут при определённом научном подходе, предоставлять тренеру информацию в определении оптимального состава сборной команды страны для эстафеты 4×100 метров.

Так как обе дистанции очень коротки, то тактика бега здесь довольно проста: сначала спортсмен за какое-то стартовое время (время разгона) разгоняется до своей максимально возможной на данный момент скорости, а оставшуюся часть дистанции бежит с этой постоянной скоростью, которую назовём крейсерской скоростью. Естественно, что при формировании команды в эстафету нужно на старт ставить спортсмена, который на этой дистанции показывает наилучшее время, а на 3 оставшихся этапа отбирать из числа оставшихся спортсменов трёх с наилучшей крейсерской скоростью.

Тренер легкоатлетической сборной вашей страны поручил вам, как одному из лучших программистов, помочь ему с формированием состава сборной на эстафету. Для оказания оперативной помощи тренеру вам необходимо быстро решить следующую задачу: зная результаты спортсмена на дистанциях 100 и 200 метров, определить его крейсерскую скорость. Вам также известно, что крейсерская скорость и время разгона каждого из спортсменов на протяжении ваших исследований не изменялись.

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

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

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

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

Тесты

Входные данные Выходные данные
9.63  19.32 10.319917
12.49  21.30 11.350737
7.46  13.58 16.339869

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

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

Для решения этой задачи мы воспользуемся формулами скорости при равноускоренном движении. Нам было дано время прохождения двух дистанций в 100 метров и 200 метров. Так как спортсмен разгоняется на дистанции 100 метров, то оставшиеся 100 метров из 200 он бежит с постоянной скоростью. Чтобы узнать время за которое он пробегает вторые 100 метров, мы вычитаем из второго значения времени первое. Дальше мы пользуемся формулой нахождения скорости по расстоянию и времени [latex]\frac{s}{t}[/latex]. Полученая скорость и будет крейсерской скоростью.

Ссылки

  • Задача на сайте e-olymp
  • Код решения в Ideone