А412г

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

Задача:

Даны две целочисленные квадратные матрицы порядка $ 6 $. Найти последовательность из нулей и единиц $ b_1, \dots , b_6 $ такую, что $ b_i = 1 $, когда количество отрицательных и неотрицательных элементов $ i $-й строки первой матрицы совпадает соответственно с количеством отрицательных и неотрицательных элементов $ i $-й строки второй матрицы.

Тесты:

Матрица $ A $ Матрица $ B $ Выходные данные
1 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
2  1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
0 0 0 0 0 0
3  1 1 1 1 1 1
-1 -1 -1 -1 -1 -1
1 1 1 1 1 1
1 1 1 1 1 1
-1 -1 -1 -1 -1 -1
1 1 1 1 1 1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
0 1 0 0 1 0
4 0 2 2 3 4 4
1 3 3 4 5 5
2 4 4 5 6 6
3 5 5 6 7 7
4 6 6 7 8 8
5 7 7 8 9 9
0 2 2 3 4 4
-1 3 1 4 3 5
-2 4 0 5 2 6
-3 5 -1 6 1 7
-4 6 -2 7 0 8
-5 7 -3 8 -1 9
1 0 0 0 0 0

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

 

Ссылка на tryhaxe

Решение:

Заведем массив  ans , в который будем дописывать $ 1 $, если количество неотрицательных элементов матрицы $ A $ в текущей строке совпадает с количеством неотрицательных элементов матрицы $ B $ в текущей строке, и $ 0 $  в противном случае. Проверять совпадение количества отрицательных элементов отдельно не нужно, потому как строки в матрицах одинаковой длины, т. е. количество отрицательных элементов всегда равно $ 6 — $ (количество_неотрицательных).

В цикле по переменной i  проходимся по каждой из шести строк матриц, каждый раз заводя счетчики на количество неотрицательных элементов. Цикл по j идет по столбцам матриц, проверяя каждый элемент. Если встретили неотрицательный элемент в матрице $ A $, увеличиваем счетик  a_positive . Если неотрицательный элемент попался в $ B $, увеличиваем  b_positive .

По истечении прохода по текущей строке проверяем, совпадает ли количество неотрицательных элементов в строке $ i $ для обеих матриц. Если да, дописываем в ответ единицу, иначе — ноль.

 

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

А165и

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

Задача:

Даны действительные числа $ a_1, a_2, \dots $. Известно, что $ a_1 > 0 $ и что среди $ a_2, a_3, \dots $ есть хотя бы одно отрицательное число. Пусть $ a_1, \dots , a_n $ — члены данной последовательности, предшествующие первому отрицательному члену ( $ n $  заранее неизвестно). Получить:

$ n + a_n $

 

Тесты:

Последовательность $ a_i $ $ n + a_n $
1 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 -6 24
2 2.7183 -0.0001 3.7183
3 1.23 2342 12349 12.434 9845 0.00002034 -3 6.00002034
4 1 2 3 4 5 6 7 8 9 10 -11 20

Решение:

Массив a — это заданная последовательность $ a_i $, n  — количество значений, предшествующих первому отрицательному числу, cur_num — текущее число во входном потоке.

Проэмулируем входной поток с помощью переменной  cur_pos . Пока значение в массиве на позиции  cur_pos  не стало отрицательным, запоминаем считанное число в переменной cur_num , увеличиваем счетчик n  на единицу и сдвигаем  cur_pos  на следующий элемент массива, т. е. считываем следующее число из входного потока. Как только во входном потоке появилось отрицательное значение, цикл прерывается,  при этом в  n записано количество чисел, предшествующих первому отрицательному числу, а в  cur_num  — последнее считанное неотрицательное число, которое находится на позиции $ n $.

Выводим ответ на задачу:  n + cur_num.

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

Ссылка на tryhaxe

А119(а)

Задача

Вычислить бесконечную сумму с заданной точностью $ \varepsilon \left(\varepsilon > 0\right) $. Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем $ \varepsilon $.

$$\sum_{i = 1}^\infty \frac{1}{i ^ 2}$$

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

Точность $ \varepsilon $.

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

Бесконечная сумма с заданной точностью $ \varepsilon $.

Тесты

Входные данные Выходные данные
1 0.0000000000000045 1.6449339997656687
2 0.45 1
3 0.123123 1.25
4 1e-9 1.6449024437950241

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

Ссылка на tryhaxe

 

Решение

На каждом шаге текущее слагаемое равно $ \frac{1}{i^2} $. Пока оно не меньше заданной точности, прибавляем к ответу.
Если заданная точность отрицательна либо равна нулю, цикл станет бесконечным, потому что $ \frac{1}{i^2} > 0, \forall i > 0 $.

Реальная же сумма ряда равна $\frac{\pi^2}{6}$, что в десятичном приближении представляет собой число 1.64493406684822643647241516664602518921894990120679843773555…

А57в

Задача

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

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

Выходные данные
Значение $ f\left(a\right) $.

График функции:
График

Тесты

Входные данные Выходные данные
1 -42 0
2 0.5 0.5
3 3 81

Решение
Находим промежуток, которому принадлежит заданное $ a $. Если $ a \in \left(-\infty; 0\right] $, то $ f(a) = 0$. Иначе если $ a \in \left(0; 1\right] $, то $ f(a) = a$. Иначе $ f(a) = a^4$

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

Ссылка на tryhaxe

 

ML26. Площадь треугольника

Условие
Найти площадь треугольника по заданным координатам его вершин $ A\left(x_a,y_a,z_a\right), B\left(x_b,y_b,z_b\right) $ и $ C\left(x_c,y_c,z_c\right) $.

Входные данные
Координаты вершин треугольника $ ABC $.

Выходные данные
Площадь $ S $ треугольника $ ABC $.

Тесты.

Входные данные Выходные данные
$ x_a $ $ y_a $ $ z_a $ $ x_b $ $ y_b $ $ z_b $ $ x_c $ $ y_c $ $ z_c $ $ S $
1 -2 1 2 3 -3 4 1 0 9 19.78635893740938
2 -3 13 -5 6 11 12 4 8 18 50.5618433208284
3 0 0 1 1 0 0 0 1 0 0.8660254037844389
4 0.5 0.5 1.5 1.5 0.5 0.5 0.5 1.5 0.5 0.8660254037844389

Решение.

Данную задачу можно решить, используя формулу Герона:
$ S = \sqrt{p \left(p — a\right) \left(p — b\right) \left(p — c\right)} $,
где $ a, b $ и $ c $ — длины сторон треугольника, а $ p $ — полупериметр, который вычисляется по формуле $ p = \frac{a + b + c}{2} $.
Для вычисления длины стороны треугольника используем формулу для определения расстояния между точками:
$ AB = \sqrt{\left(x_b — x_a\right)^2 + \left(y_b — y_a\right)^2 + \left(z_b — z_a\right)^2} $.

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

Ссылка на tryhaxe

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

Source: 5.16 if

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

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

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

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

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

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

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