MS10. Text encryption

Задача взята отсюда.

Условие

Зашифруйте текст из входного потока, заменяя каждый символ результатом сложения по модулю 2 его кода и кода предыдущего зашифрованного символа. Первый символ шифруется инверсией бит.

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

Символьная последовательность.

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

Зашифрованная символьная последовательность.

Тесты :

Входные данные Выходные данные
Where is the table? a8 c0 a5 d7 b2 92 fb 88 a8 dc b4 d1 f1 85 e4 86 ea 8f b0
What a nice day! a8 c0 a1 d5 f5 94 b4 da b3 d0 b5 95 f1 90 e9 c8
Glad to see you! b8 d4 b5 d1 f1 85 ea ca b9 dc b9 99 e0 8f fa db

Код на Haxe:

Ход решения:

Считываем код первого символа, инвертируем его и выводим в шестнадцатеричной системе счисления:

Вводим вторую переменную и запускаем цикл, который будет работать, пока считывание не дойдет до переноса строки. Здесь мы считываем код очередного символа, складываем его по модулю 2 с шифром предыдущего символа, выводим через пробел шестнадцатеричное представление полученного кода и записываем этот код в первую переменную:

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

Ссылки:

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

А137д

Задача

Даны натуральное число [latex]n[/latex], действительные числа [latex]a_1, … , a_n[/latex] . Вычислить:

[latex]-a_1, a_2, -a_3, … , (-1)^na_n[/latex]

Тесты

[latex]n[/latex] [latex]a_1, … , a_n[/latex] [latex]-a_1, a_2, -a_3, … , (-1)^na_n[/latex] Комментарий
4 3 -2 -3 6 -3 -2 3 6 Пройден
5 40 -30 0 34.5 0.2 -40 -30 0 -34.5 0.2 Пройден
3 126 -486.95 -20.0985 -126 -486.95 20.0985 Пройден

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

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

Для начала вводим число [latex]n[/latex]. Задаем цикл для ввода ряда чисел [latex]a_1, … , a_n[/latex]. Если [latex]n[/latex] — чётное число, умножаем введенное [latex]a[/latex] на [latex]-1[/latex]. Выводим результат.

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

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

А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

e-olymp 7365. Молоко и пирожок

Ссылка на задачу на e-olymp.

Условие

Ученикам первого класса дополнительно дают стакан молока и пирожок, если вес первоклассника менее $30$ кг. В первых классах школы учится $n$ учеников. Стакан молока имеет емкость $200$ мл, а упаковки молока – $0,9$ л. Определить количество дополнительных пакетов молока и пирожков, необходимых каждый день.

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

В первой строке задано целое число $n$ ([latex]1 \leq n \leq 100[/latex]). В следующей строке идут $n$ положительных действительных чисел – массы первоклассников.

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

Два целых числа — количество дополнительных пакетов молока и пирожков, необходимых каждый день.

Тесты

Входные данные Выходные данные
20
30 37 31 25 32 29 35 40 28 25 30 34 26 23 20 22 21 30 38 33
2 9
3
30 29 30
1 1
5
25 41 56 20 20
1 3

Код.

Решение.

Заведем переменные для хранения количества дополнительных пирожков ($p$), стаканов молока ($m$), а также переменную в которой будет храниться вес текущего первоклассника ($w$). Если вес меньше 30, то увеличиваем количество дополнительных пирожков, и добавляем 200 к молоку (объем одного стакана). После того, как вес всех детей был учтен, делим значение хранящееся в переменной $m$ на 900 и округляем в большую сторону, для того, чтобы вычислить необходимое количество пакетов молока.
Ссылка на решение задачи на сайте Try Haxe!

A165к

Задача. Даны действительные числа $a_{1}, a_{2},\ldots$. Известно, что $a_{1} > 0$ и что среди $a_{2}, a_{3}, \ldots$ есть хотя бы одно отрицательное число. Пусть $a_{1},\ldots,a_{n}$ – члены данной последовательности, предшествующие первому отрицательному члену ($n$ заранее неизвестно). Получить: $\left | a_{1}-a_{n} \right |$.

Тесты

Введённые данные. $\left | a_{1}-a_{n} \right |$ Комментарий.
1 2 6 4 -8 0 6 8 -7 3 Пройден.
0,65 3,2 4 0 -3 2 0,65 Пройден.
0 -5 8 9 0 Пройден.
0,8 3 6 9 7,2 0 4 -2 3,2 Пройден.
1 -3 6 0 Пройден.

Код

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

Затем нужно было найти n-ый член последовательности. Для этого было создано 2 переменные, в одной из которых хранится настоящее значение n-ого члена независимо от его знака. Если этот член — число не отрицательное, то вспомогательной переменной присваивается его значение и цикл повторяется вновь. Если же условие неравенства не выполняется, то цикл заканчивается, и у нас остаётся значение нашей вспомогательной переменной (не отрицательное).

В том случае, если первый член последовательности является в то же время и n-ым, $a_{n}$ и вспомогательной переменной присваивается значение $a_{1}$. И в этом случае модуль разницы будет равен 0.

После программа выводит модуль $\left | a_{1}-a_{n} \right |$.

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

А137а

Задача:

Даны натуральное число n и действительные числа [latex] a_1, \cdots ,a_n [/latex]

Вычислить:

[latex] a_1, a_1 + a_2, \cdots, a_1 + a_2 + \cdots + a_n [/latex]

Решение:

Для подсчёта суммы в данной задаче надо было организовать цикл for (поскольку указано количество элементов в ряду), и с каждой итерацией прибавлять к результату result (которому предварительно придано значение 0) введённое с клавиатуры значение, потом выводить результат на экран.

Тесты:

Кол-во элементов [latex] a_1, \cdots ,a_n [/latex] Результат
7 1, 2, 3, 4, 5, 6, 7 1, 3, 6, 10, 15, 21, 28
10 10, 12, 14, 16, 18, 20, 21, 23, 25, 27 10, 22, 36, 52, 70, 90, 111, 134, 159, 186
5 0.1, 0.2, 0.3, 0.4, 0.5 0.1, 0.3, 0.6, 1.0, 1.5

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

А136д

Задача. Даны натуральное число $n$, действительные числа [latex]a_{1}, \ldots, a_{n}[/latex]. Вычислить: [latex]a^{2}_{1} + \ldots + a^{2}_{n}[/latex].

Входные данные
$n$ — количество элементов последовательности ($n > 0$). $a$ — значение элемента, прочитанного из входного потока

Выходные данные
$sum$ — переменная для хранения суммы последовательности

Тесты

$n$ $a$ $sum$
2 5, 8 89
3 6, 13, 4 221
7 2, 4, 8, 16, 32, 64, 128 21844

Код

Решение
Из входного потока считывается число $n$ — кол-во элементов последовательности. Затем начинается цикл с условием «пока $n$ не равно нулю». Из входного потока считывается следующий элемент. К переменной $sum$ суммируются вычисления $a * a$, после чего декрементируется $n$. В выходной поток подаётся значение переменной $sum$.

A155

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

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

Условие:

Даны натуральное число [latex]n [/latex] и действительные числа [latex] x_{1},\ldots, x_{n} [/latex] [latex](n\geq 2)[/latex]

Вычислить:

[latex]\left(\left(\frac{1}{|x_{1}|+1}+x_{2} \right)\left(\frac{1}{|x_{2}|+1}+x_{3} \right)\cdots\left(\frac{1}{|x_{n-1}|+1}+x_{n} \right)\right)[/latex]

Тесты

Ввод Вывод
$n$ $x_1, \ldots, x_n$ $k$
2 1 1 1.5
3 0.5 1 2 4.16667
3 -0.3 1 -0.5 0

Решение:

Задаем переменные [latex]n,x,k[/latex]. В цикле умножаем переменную [latex]k[/latex] каждый раз на [latex]\left(\left(\frac{1}{|x_{n-1}|+1}+x_{n} \right)\right)[/latex]. После выводим значение [latex]k[/latex].

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

А 136к

Задача:

Даны натуральное число $n$, действительные числа  [latex]a_{1}\ldots a_{n}[/latex].

Вычислить:  $ 2\left(a_{1}+\ldots+a_{n} \right)^2 $.

Тесты:

n введенные результат
3 1 2 3 72
4 0 0 0 0 0
4 -5 -7 -3 -1 512

Код:

Ход решения:

Заводим переменную [latex]result[/latex] и присваиваем ей значение 0 . Далее, в цикле от 0 до [latex]n[/latex] увеличиваем значение текущего значения [latex]result[/latex]. По окончании цикла возводим [latex]result[/latex] в квадрат и умножаем на 2.