e-olymp 903. Первая или последняя?

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

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

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

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

Тесты

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

Код

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

e-olymp 916. Интересное произведение

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

Задача
Определить все возможные значения произведения $i·j$, если целочисленные значения переменных $i$ и $j$ меняются соответственно $i$ от $a$ до $b$ и $j$ от $c$ до $d (1 ≤ a, b, c, d ≤ 10)$.

Входные данные
В одной строке заданы $4$ числа $a, b, c$ и $d$ ($a$ может быть больше $b$, $c$ может быть больше $d$).

Выходные данные
Вывести количество возможных вариантов произведения.

Тесты

Входные данные Выходные данные
1 1 10 1 10 42
2 5 7 4 3 6
3 6 3 8 4 16
4 2 8 4 1 19

Код

Решение
Для начала присваивается $a$ и $c$ минимальные значения из пары, а $b$ и $d$ — максимальные. Переменной $p$ присваивается произведение минимальных значений, а $i$ присваивается минимальное значение из первой пары. Далее в цикле проверяется делится ли число $p$, которое находится в диапазоне от произведения минимальных значений до произведения максимальных, на $i$ и $j$. Если условие выполняется, то временной переменной присваивается единица, а счетчик (результат) увеличивается на $1$.

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 6277. Покупка воды

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

Задача
Стоимость бутылки воды, учитывая стоимость пустой бутылки, составляет $1$ грн $20$ коп., а стоимость пустой бутылки $20$ коп.
Сколько бутылок воды можно выпить на $n$ грн, учитывая, что пустые бутылки можно сдавать, и на полученные деньги приобретать новые бутылки воды.

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

Выходные данные
Количество бутылок воды, которое можно выпить на $n$ грн.

Примечание: Вода без бутылки не продаётся.

Тесты

Входные данные Выходные данные
1 0,7 0
2 2 1
3 10 9
4 999 998

Код

Решение
Вводим переменную $n$ равную числу заданных денег. Так как при покупки и возвращении бутылки тратится $1$ грн, количество купленной воды будет на одну меньше, чем количества купюр. Чтобы «избавиться» от монет (десятичной части числа) при получении количества бутылок воды, округляем конвертируем переменную в целочисленный тип с округлением в сторону $0$.

Альтернативный вариант

Решение
Вводим переменную $n$ равную числу заданных денег и счетчик купленной воды. В цикле отнимаем от переменной $1$, так как при возвращении бутылки тратится лишь $1$ грн, а счетчик купленной воды увеличиваем на $1$.

5.17. Выражение переключатель (switch)

Ссылка на оригинальную статью
switch является оператором ветвления в языках программирования, в том числе и в Haxe.
Конструкция switch открывается выражением «switch» и тело функции ограничивается фигурными скобками {}. Ветки switch начинаются или с ключевого слова «case» с условием выполнения данной ветки, или же с ключевого слова «default» для состояния по умолчанию. В обоих случаях после условия идет двоеточие : и блок операторов, которой надо выполнить.

Так как в Haxe ветки case выполняются независимо, break не нужен.
Конструкции switch могут быть использованы как значение; в таком случае типы всех case и default должны унифицироваться.
Пример. Программа, которая выводит текущий день недели.

Haxe позволяет использовать выражения, например, мы можем в предыдущем примере написать не b, а b+1, если мы захотим узнать следующий день.
Также Haxe дает нам большие возможности в использовании switch. Например, мы можем проверять соответствия значений различных типов с помощью регулярных выражений (шаблонов).
Рассмотрим пример с массивом, взятый из данной статьи. В качестве входного параметра для оператора switch дается массив фиксированной длины. В зависимости от заполнения и длины массива, оператор будет выдавать нужный результат. Данный пример показывает нам, что мы можем указывать как и нужный нам размер массива, так и заполнение определенной ячейки массива. Например, программа выведет 0 только при массиве длинной в два элемента, где в первой ячейке будет число 2. Если же размер массива будет другой или первой будет стоять не 2, то оператор продолжит сравнения с остальными условиями. В данном примере роль состояния по умолчанию выполняет последнее условие, которое «пропускает» любой массив. Стоит заметить, что если выполняются сразу два условия, например, массив будет состоять из [2,6], то программа все равно выведет 0, так как первое условие идет раньше.