e-olymp 107. Компакт-диски

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

Задача

Чистые компакт-диски продают в трёх видах упаковок. Упаковка из 100 дисков стоит 100 грн., из 20 дисков — 30 грн., а один диск стоит 2 грн. Какую минимальную сумму нужно истратить для покупки [latex] n [/latex] таких дисков?

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

Количество дисков [latex] n (n ≤ 1000)[/latex].

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

Вывести минимальную сумму в гривнах для покупки [latex] n [/latex] дисков.

Тесты

Входные данные (число [latex] n [/latex]) Выходные данные (минимальная сумма, грн.)
1. 17 30
2. 7 14
3. 123 136
4. 24 38
5. 173 200
6. 108 116
7. 136 160

 

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

Решение

Для решения этой задачи мы должны вывести минимальную сумму для покупки[latex] n [/latex] дисков. Следует отметить, что для заданного числа [latex] n [/latex] дисков нам надо определить минимальную сумму, при этом мы можем покупать упаковку с большем количеством дисков, чем нужное нам [latex] n [/latex], если при этом итоговая сумма покупки получится меньше. Таким образом, мы аналитически определили, что если [latex]n\mod100 > 65[/latex] то экономней будет приобрести большую упаковку на 100 дисков за 100 грн., чем несколько более маленьких упаковок по 30 грн., и соответственно при [latex]n\mod20 > 15 [/latex] лучше приобрести одну упаковку на 20 дисков за 30 грн., чем по одному за 2 грн.

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

e-olymp 915. Прямоугольный или нет?

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

Задано длины сторон треугольника. Определить, является ли этот треугольник прямоугольным.

Ссылка на задачу на e-olimp.

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

В единственной строке задано 3 натуральных числа — длины сторон треугольника. Длины сторон не превышают 1000.

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

Вывести «YES» (без кавычек), если треугольник прямоугольный, или «NO» (без кавычек) в противном случае.

Решение

Для проверки вида треугольника использовалась формула из теоремы Пифагора : $$a^2+b^2=c^2,$$ где — $a$ и $b$ — катеты, $c$ — гипотенуза.

Тесты

Входящие данные Результат
5, 4, 40 NO
6, 10, 2 NO
5, 4, 3 YES
3, 4, 5 YES

Пример на TryHaxe.

5.16. Условное выражение if

Source: 5.16 if

Условные выражения начинаются с ключевого слова if  ,далее следует само условие в круглых скобках ()  и выражение, которое будет вычислено в случае выполнения условия:

Условие имеет тип Bool . Это означает, что если значение выражения, записанного в condition , является истиной true , то будет выполнено то, что далее написано в expression . Иначе — не выполнится.

После expression   может следовать ключевое слово else  для задания другого выражения, которое должно быть вычислено, если условие не выполняется:

Здесь expression2  может состоять из еще одного if  -выражения:

Если значение, вычисляемое if -выражением является необходимым для дальнейших вычислений, к примеру

то возвращаемые значения должны иметь совместимые типы. Если в данной конструкции отсутствует выражение else , возвращается выражение типа Void .

Пример. Программа сравнивает значение двух выражений: