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 903. Первая или последняя?

Ссылка на оригинальную статью
Ссылка на e-olymp.com.

Задача
Задано трехзначное число. Какая цифра в нем больше: первая или последняя?

Входные данные
Одно трехзначное число.

Выходные данные
Вывести большую из указанных цифр. В случае их равенства вывести знак «=» (без кавычек).

Тесты

Входные данные Выходные данные
1 328 8
2 832 8
3 666 =
4 420 0

Код

Решение
Первая ($n/100$) и последняя цифра ($n%10$) заданного числа проверяются на равенство. Если условие выполняется, то выводится знак равенства, иначе выводится наибольшая цифра.

e-olymp 2392. Интересная сумма

Ссылка на e-olymp.com.

Задача
Дано трёхзначное натуральное число $n$. Определить сумму наибольшего и наименьшего трёхзначных чисел, которые могут быть образованы из числа $n$ перестановкой цифр.

Входные данные
Натуральное число $n$ $(100 ≤ n ≤ 999)$.

Выходные данные
Вывести сумму наибольшего и наименьшего трёхзначных чисел

Тесты

Входные данные Выходные данные
1 123 444
2 524 787
3 100 200
4 777 1554

Код

Решение
Заданное число разбиваем на цифры: для получения сотен число делится на сто, для десятков — остаток деления на сто делится на десять, для сотен — остаток деления на десять. Все числа округляются в сторону нуля и записываются в массив, который отсортировывается с помощью функции sort, входным параметром которой является функция, которая возвращает $(0, 1$ или $-1)$. Далее проверяется, нет ли в числе нулей. Если нулей в числе нет, то сумма считается по формуле $(100·a[0]+10·a[1]+a[2]+100·a[2]+10·a[1]+a[0])=$ $=arr[0]·101+arr[1]·20+arr[2]·101$. Если же ноль есть, то делается проверка на ноль в следующем элементе. Если ноль есть, сумма считается по формуле $arr[1]·100+arr[2]·1+arr[1]·1+arr[2]·100=arr[1]·110+arr[2]·101$, иначе последний элемент умножается на $200$. Все эти проверки делаются для того, чтобы для чисел, в которых есть нули, минимальное число, которое генерируем для суммы, было трехзначным.

e-olymp 923. Время года

С решением этой задачи на языке С++ можно ознакомиться здесь

Приведенный код можно выполнить здесь

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

Входные данные
Одно число — номер месяца.

Выходные данные
Для весенних месяцев вывести Spring, для летних — Summer, для осенних — Autumn и для зимних — Winter.

Тесты

Входные данные Выходные данные
1 Winter
4 Spring
6 Summer
10 Autumn

Код

Решение
Для решения данной задачи необходимо использовать переменную с целочисленным значением, которое соответствует порядковому номера месяца (от 1 до 12 включительно). Сразу получаем результат — остаток от деления на 12 — тем самым получается число от 0 до 11. Это позволяет разместить все зимние месяцы подряд. С помощью тернарной операции проверяем, к какому времени года принадлежит введённый месяц. В качестве результата в выходной поток выводится значение переменной типа String, равное одному из 4 вариантов: Winter, Spring, Summer или Autumn.

Mif 17.18

Условие:

Принадлежит ли точка ([latex]x;y[/latex]) фигуре на рисунке?

Image

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

Два числа — координаты точки.

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

Слово «Yes», если точка принадлежит фигуре, в противном случае -«No».

Код:

Ход решения:

Точка будет принадлежит фигуре тогда и только тогда, когда будет выполняться одно из условий:

  • Оба числа не отрицательные и их сумма не превышает 6;
  • Оба числа не положительные, и их сумма не меньше 6.

Если одно из этих условий выполняется, то на выходе имеем «Yes», иначе — «No».

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.

Ю2.16 Кратные пары

Условие

Среди заданных целых чисел [latex]k, l, m[/latex] найти пары кратных.

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

Целые числа [latex]k,l,m[/latex].

[latex]\left | k,l,m \right |< 2\cdot 10^{9} [/latex]

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

Пары чисел, одно из которых является кратным другого.

Тесты

 Входные данные Выходные данные
1.  1 2 3  1 2

1 3

2.  0 2 4 2 4
3. 1 2 6 1 2

1 6

2 6

4.  5 5 2  5 5
 5.  0 0 3
6. 2 5 3
7. -10 5 2

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

Решение

Хотя свойство делимости определено на всём множестве целых  чисел, обычно рассматривается лишь делимость натуральных  чисел.

Кратное натурального числа [latex]b[/latex] — это натуральное число [latex]a[/latex],  которое делится на [latex]b[/latex] нацело. Наименьшим кратным данного числа является само это число.

Код на try.haxe.org

A57в

Условие
Дано действительное число $a$. Вычислить $f(a)$ если $f(x)=\left\{\begin{matrix} 0, x\leq 0 \\ x, 0< x\leq 1\\ x^{4}, x> 1 \end{matrix}\right.$

Входные данные
Действительное число $a$.

Выходные данные
$0$ — если $a\leq 0$
$a$ — если $0 < a \leq 1$
$a^{4}$ — если $a > 1$

Тесты

Входные данные Выходные данные
-12.07 0
0.75 0.75
2.0 16.0

Решение
Вводим число $a$. Проверяем условие $a\leq 0$, если выполняется, то выводим $0$, оначе проверяем следующее условие $0 < a \leq 1$, если выполняется, то выводим $a$, иначе выводим $a^{4}$.

Try Haxe !

А34а. Максимум из трёх

Задача.

Даны действительные числа  [latex]x, y, z[/latex]. Получить  [latex]\max\left\{x,y,z \right\}[/latex].

Код:

Решение.

  1. Как известно, для любых чисел  [latex] x,y \in \mathbb{R} [/latex]    [latex] \max\left\{x,y \right\} = x,[/latex]  если  [latex] x \geq y[/latex], и  [latex] \max\left\{x,y \right\} = y,[/latex]  в противном случае.
  2. Нетрудно доказать, что  [latex] \forall x,y,z \in \mathbb{R} [/latex]    [latex] \max\left\{x,y,z \right\}=\max\left\{\max\left\{x,y \right\},z \right\}[/latex]
  3. С учётом замечания  1 проверим неравенство   [latex] x > y[/latex] и если оно выполняется, перенаправим поток на вывод [latex] \max\left\{x,z \right\}[/latex]. В противном случае, на вывод [latex] \max\left\{y,z \right\}[/latex]

Ссылка на решение задачи.

Cсылка на условие задачи.