e-olymp 128. Счастливые билеты

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

Задача

Подсчитайте количество счастливых билетов, у которых сума первых трёх цифр равна [latex]N[/latex].

Счастливым билетом называется билет с шестизначным номером, у которого сумма первых трёх цифр равна сумме трёх последних.

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

В единственной строке задано натуральное число [latex] N (N ≤ 27). [/latex]

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

Единственное число — количество счастливых билетов.

Тесты

Входные данные (число [latex] N [/latex]) Выходные данные (число билетов)
1. 1 9
2. 27 1
3. 0 1
4. 10 3969
5. 3 100

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

Решение
Любой шестизначный номер можно представить как 2 трехзначных номера.

Для решения задачи рассмотрим все варианты трехзначных номеров. Две первые цифры такого номера могут быть любыми. Переберем все их комбинации с помощью двух  циклов. А для определения третьей цифры будем использовать специальное условие. Она должна быть результатом вычитания двух первых цифр из [latex]N[/latex], и быть именно цифрой, то есть меньше 10.

Когда в цикле встречается подходящая комбинация, счетчик [latex]c[/latex] увеличивается на 1. Так как номер шестизначный, а счетчик [latex]c[/latex] подсчитывает удачные комбинации для трехзначного числа первой части, то и для трехзначного числа второй части он будет соответствовать. Следовательно, окончательное число комбинаций будет равно [latex]c \cdot c[/latex].

Оригинальное решение: cpp.mazurok.com.
Рабочий код для тестирования на try.haxe.org: Try Haxe !

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 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$.

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

e-olymp 1210. Очень просто!!!

Условие
По заданным числам $n$ и $a$ вычислить значение суммы: $\sum \limits_{i=1}^{n} i⋅ a^{i}$

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

Выходные данные
Значение суммы.

Тесты

Входные данные Выходные данные
3 3 102
4 4 1252

Решение
Вводим числа $n$ и $a$. Далее заходим в цикл от $1$ до $n$ включительно, так как $n$-й элемент нам тоже нужно суммировать. В каждой итерации цикла возводим число $a$ в $i$-ю степень, умножаем на $i$ и все это прибавляем к переменной $sum$. После завершения цикла выводим переменную $sum$.

Try Haxe !

5.14. Оператор цикла while

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

Обычный цикл [latex]while[/latex] начинается с ключевого слова [latex]while[/latex], за которым следует открывающая скобка круглая « (», выражение условия и закрывающая скобка « )». После этого следует выражение тела цикла.

Выражение условия должно быть типа [latex]Bool[/latex].

На каждой итерации оценивается выражение условия. Если оно принимает значение [latex]false[/latex], цикл останавливается, в противном случае он вычисляет выражение тела цикла.

Этот вид цикла [latex]while[/latex] не оценивает выражение тела цикла: если условие не выполняется с самого начала, то тело цикла не вычисляется (не выполняется). Этим этот вид отличается от циклов [latex]do-while[/latex].