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$. Все эти проверки делаются для того, чтобы для чисел, в которых есть нули, минимальное число, которое генерируем для суммы, было трехзначным.

Ю 4.1

Задача взята отсюда
Условие
Задача. Разделение по знаку. В массиве С(n) подсчитать количество отрицательных и сумму положительных элементов.
Тесты

Входной массив Кол-во отрицательных элементов Сумма положительных элементов
1,2,-3,4,-5 2 7
25,-13,100,-1024,1,0,-24,36 3 162
-17,45,-2,80,-11,-20,-14,10,12,-3 6 147

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

В ходе решении данной задачи я использую цикл for, в котором сначала считываются, а затем обрабатываются данные. Переменная-счётчик k нужна для того, чтобы узнать кол-во отрицательных элементов. А если встречаются неотрицательные элементы, то подсчитывается их сумма в переменной s. Для проверки выполнения программы можно воспользоваться ссылкой.

A710

Ссылка на оригинальное задания: тут.

Условие

Дана матрица $A$ размера [latex]n \times m[/latex]. Получить транспонированную матрицу $A^*$ (ее размер [latex]m \times n[/latex]).

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

Первая строка содержит параметры $n$ и $m$. В следующих $n$ строках содержится матрица $A$.

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

Матрица $A^*$.

Тесты

n m A A*
3 4 1 2 3 4
2 3 4 5
3 4 5 6
1 2 3
2 3 4
3 4 5
4 5 6
2 3 1 2 3
2 3 4
1 2
2 3
3 4

Код.

Решение.

Считываем матрицу [latex]n \times m[/latex], а затем создаем транспонированную матрицу, в которой строки исходной матрицы являются столбцами и наоборот. Выводим $A^*$.
Ссылка на решение задачи на сайте Try Haxe!

A694a

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

Ссылка на решение задачи на сайте Try Haxe!

Условие:

Получить квадратную матрицу порядка [latex]n[/latex] [latex]\begin{pmatrix}1 &0 &\cdots & 0 \\ 0 & 1 &\cdots &0 \\ \cdots &\cdots &\cdots \cdots & \cdots \\ 0 & 0 & \cdots & 1\end{pmatrix}[/latex]

Тесты

n Матрица
3 1 0 0

0 1 0

0 0 1

4 1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

6 1 0 0 0 0 0

0 1 0 0 0 0

0 0 1 0 0 0

0 0 0 1 0 0

0 0 0 0 1 0

0 0 0 0 0 1

Решение:

Сначала создаётся переменная [latex] h[/latex], которая задаёт размерность двумерного массива(матрицы), после чего создаётся собственно массив(матрица) указанной размерности, изначально заполненный нулями. С помощью цикла главная диагональ заполняется единицами. Далее циклом выводим массив.

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

 

Ю4.35

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

Условие:

Совместная работа. Известно время [latex]t_{1},t_{2}, \cdots,t_{n}[/latex], за которое некоторую работу может выполнить каждый из [latex]n[/latex] рабочих бригады, работая в одиночку. Сколько времени понадобится бригаде на выполнение этой работы, если они будут работать совместно (и при этом никто из них не «сачкует»)

Тесты

Количество рабочих n. Время t каждого рабочего, требуемое для выполнения некоторой работы.  Время совместной работы.
3 2 4 5 1.1
4 5 7 9 4 1.4
5 2 4 5 1 2 0.4
7 8 6 5 6 6 7 2 0.7

Решение:

В программе используются два цикла. Первый– для ввода времени каждого рабочего, а второй– для вычисления общей производительности рабочих. Call–callaboration (время совместной работы), sum – общая производительность рабочих.В данной задаче нам нужно найти время, за которое [latex]n[/latex] рабочих выполнят какую-то совместную работу. В задаче не указан  общий объём выполняемой работы, по-этому зададим его как 1. Время совместной работы находят по формуле: [latex]t_{call}=\frac{V}{\frac{V}{t_{1}}+\frac{V}{t_{2}}+\cdots+\frac{V}{t_{n}}}[/latex], где [latex]V[/latex] –  общий объём выполняемой работы, т.е – 1. Т.к в задаче не указана единица измерения времени, будем считать все в часах.

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

 

 

6.6 Array Comprehension

Array Comprehension – это выражение, которое позволяет быстро создавать новый массив из существующего с помощью for и while, или без массива с инициализацией переменных во время итераций цикла.

Простые array comprehensions:

Array Comprehension с использованием if:

Array Comprehension c использованием двух массивов:

Выражение цикла могут быть любыми, включая условия и вложенные циклы, поэтому следующие действия будут работать так, как ожидалось:

Также можно инициализировать массив после его объявления:

Ссылка на официальную документацию

5.5 Объявление массивов

Оригинал статьи.
Элементы массива разделяются запятыми , и заключаются в квадратные скобки []. Пустыми квадратными скобками [] объявляется пустой массив, в то время как [1, 2, 3] инициализирует массив с тремя элементами $1$, $2$, $3$.

Так же, как и в других языках программирования, в haxe многомерные массивы создаются на основе одномерных, у которых элементы являются массивами.

Сгенерированный код может быть менее кратким на платформах, которые не поддерживают инициализацию массива. В итоге такой код инициализации массива из трех элементов var arr = [1, 2, 3];  будет выглядеть следующим образом:

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

Пример использования массива.

Решение на Try Haxe !