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 19. The degree of symmetry

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

Условие

Степенью симметрии натурального числа назовём количество пар его десятичных цифр, в которых цифры совпадают и расположены симметрично относительно середины десятичной записи этого числа. Если некоторая цифра стоит посередине десятичной записи, её тоже нужно учитывать в паре с ней самой. Найти степень симметрии числа $n$.

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

Одно натуральное число $n < 2 * 20^9$.

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

Вывести степень симметрии числа $n$.

Тесты:

Ввод Вывод
$123322$ $2$
$100$ $1$
$1010$ $0$
$1234321$ $4$
$1234567891$ $1$

Код на Haxe:

Ход решения:

Вначале считываем число. Затем раскладываем его по цифрам внутри массива (в обратном порядке, но для нашей задачи порядок цифр значения не имеет):

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

Ссылки:

Рабочий код для тестирования на try.haxe.org: Try Haxe !

Ю4.12

Условие
Задача: Все ненулевые элементы матрицы $D\left(k,l\right)$ расположить в начале массива $E\left(k \times l\right)$ и подсчитать их количество..

Входные данные
Два натуральных числа $k$ и $l$. А так же $k \times l$ элементов массива.

Выходные данные
Матрица $D$, ненулевые элементы массива $E$, количество ненулевых элементов

Тесты

$k$ $l$ Матрица $D$ Ненулевые элементы матрицы $E$ Количество ненулевых элементов
2 3 2 7 0
1 4 9
2 7 1 4 9 5
3 4 6 7 4 2
9 0 1 3
0 8 0 19
6 7 4 2 9 1 3 8 19 9
4 2 8 9
0 1
5 2
7 26
8 9 1 5 2 7 26 7

Решение
Вводим числа $k$ и $l$. Получаем размерность массива $E$ — $M = k * l$. Заходим в цикл в котором вводим все элементы матрицы $D$ и считаем количество ненулевых элементов и перегоняем их в массив $E$. Потом удаляем нулевые элементы из матрицы $E$.

Try Haxe !

Ю 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. Для проверки выполнения программы можно воспользоваться ссылкой.

Ю 4.4

Условие

Вычислить среднее значение [latex]m(x)[/latex] и дисперсию[latex]d(x)[/latex] для заданного массива [latex]X(i)[latex] наблюдений.

Решение

Среднее значение выборки или математическое ожидание можно вычислить по формуле: [latex]M(X)=\frac{1}{n}\sum_{i=1} x_{i}[/latex]

Дисперсию: [latex]D(x) = \frac{1}{n}\sum_{i=1}x_{i}^{2} — M(X)^{2}[/latex]

 

Ссылка на  TryHaxe!

Тесты

X(k) X D
 [2,2,2,1,4,5] 2.67 6.33
 [1,2,3,10,4,10]   5 3.33
 [1]   1   0

Ю 4.17

Задача Ю4.17. В массиве $A(n)$ найти и напечатать номера (индексы) локальных максимумов, то есть таких $a_{i}$, что $a_{i-1} < a{i} > a_{i+1}$.

Тесты

Значения Результат
5, 3, 8, 6, 7, 2, 9, 5 2 4 6
8, 9, 1, 7, 7, 2, 3, 1, -1, 10 1 6

Код

Решение

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

Ссылка на условие задания: cpp.mazurok.com
Try Haxe

Ю4.28

Ссылка на оригинальное решение

Задача:

Каждый из элементов $ x_i $ массива $ X\left(n\right) $ заменить средним значеним первых $ i $ элементов этого массива.

Тесты:

$ n $ Входные данные Выходные данные
1  12 7 4 33 56 22 3 22 5 6 7 8 9 7 5.5 14.666666666666666 25 24.4 20.833333333333332 21 19 17.555555555555557 16.5 15.727272727272727 15.166666666666666
2  1 136 136
3  3 -1 1 0 -1 0 0
4  10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

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

Ссылка на tryhaxe

Решение:

Сохраняем в переменной  sum  сумму первых $ i + 1 $ элементов массива. Тогда среднее значение для первых $ i + 1$ элементов можно вычислить как значение  sum , деленное на количество просуммированных членов массива. Поскольку значение элемента массива под номером $ i $ для дальнейших вычислений не понадобится, можно сразу его перезаписать.

Ю 4.31

Задача

Циклический сдвиг. Осуществить циклический сдвиг элементов массива [latex]T(n)[/latex] на [latex]m[/latex] позиций влево, то есть получить массив: [latex]t_{m+1},…,t_{n},t_{1},…,t_{m}[/latex].
При этом необязательно [latex]m<n[/latex].

Тесты:

изначальный массив сдвиг (m) результат комментарий
1 2 3 4 5 6 7 2 3 4 5 6 7 1 2 пройден
1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 пройден
1 2 3 4 5 6 7 10 4 5 6 7 1 2 3 пройден

 

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

Пример выполнения

Ю4.21

Задача.

Целочисленный массив [latex] K(n, n) [/latex]  заполнить нулями и единицами, расположив их в шахматном порядке.

Решение.

В цикле проверяем если сумма номеров элемента в массиве чётна, то значению элемента массива присваиваем  единицу, в противном случае присваиваем  ноль.

Тесты:

n = 4 \begin{pmatrix}0 & 1 & 0&1 \\1 & 0 & 1&0 \\0 & 1 & 0&1 \\1 & 0& 1&0\end{pmatrix}
n = 2 \begin{pmatrix}
0 & 1  \\
1 & 0
\end{pmatrix}

 

Задача взята с источник

Ю 4.25

Задача

Заполнить матрицу заданного размера [latex]M(k,l)[/latex] числами 1, 2, 3, 4 так, чтобы по горизонтали, вертикали и диагонали не было одинаковых рядом стоящих чисел.

Тесты

[latex]k[/latex] [latex]l[/latex] Output
6 6
5 5

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

Алгоритм решения

Заполняем массив с помощью формулы (j + 2 * (i % 2)) % 4 + 1. При i четном 2 * (i % 2) будет обращаться в 0. То есть в нечетных строках будут числа 1, 2, 3, 4 подряд, а в четных строках будут меняться цифры 1 на 3, 2 на 4, 3 на 1, 4 на 2.

Решение задачи на Try Haxe !

Решение этой задачи на С++ и Java.