e-olimp 7365

Ссылка на оригинал задачи

Задача «Молоко и пирожок»

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

Тесты:

Количество детей Вес Количество упаковок молока Количество пирожков
3 30 29 30 1 1
5 25 41 56 20 20 1 3
4 30 30 30 30 0 0
7 25 26 27 28 29 23 24 2 7

Код:

Алгоритм:

  1. Объявление и ввод значений переменных.
  2. Используем цикл for для подсчета необходимого количества пирожков.
  3. На основе предыдущих данных и округления в большую сторону (метод  Math.ceil ), подсчитываем необходимое количество пакетов молока.
  4. Окончание работы программы.

Работающая версия программы на Ideone.com

Ссылка на источник

А136л

Постановка задачи

Даны натуральное число $latex n$, действительные числа $latex a_1,\cdots,a_n$. Вычислить: $latex |a_1*a_2*\cdots*a_n|$.

Тесты

$latex n$ $latex a_1$ $latex a_2$ $latex a_3$ $latex a_4$ $latex a_5$ $latex a_6$ $latex a_7$ $latex a_8$ $latex k$
4 5 -3 2 1 5.477225575051661
5 2 7 4 3 5 28.982753492378876
3 4 4 0 0
5 3 8 6 2.8 1.3 22.894541

Код

 

Описание решения

Объявляем переменную $latex n$ (количество элементов — это целое число, поэтому используем тип int) и переменную $latex p$ (произведение), она может быть вещественной, поэтому выбираем тип double.

В цикле for считываются элементы $latex a_1,\cdots,a_n$, где   вычисляется их произведение.

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

Посмотреть, как работает программа можно на сайте  ideone.
Задача была переделана из данного решения.

MS 7. Средняя зарплата

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

Входные данные
Фамилия работника name и величина его зарплаты salary.

Выходные данные
Средняя зарплата по компании.

Тесты

Входные данные Выходные данные
name salary  totalSalary/employeesNum
1. Ivanov 100 100
Ivanov 300 200
2. Smirnov 150 150
3. Popov 200 200

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

Пояснение

С потока данных считывается первое значение и записывается в переменную name. Затем считывается заработная плата и записывается в переменную sal. В переменную total записывается общая полученная сумма работниками, увеличивается счетчик количества выплат sum. Средняя зарплата считается по формуле среднего арифметического: [latex]x = \frac{total}{sum}[/latex] и выводится потоком вывода.

Ссылка на код по тесту 1.

Ссылка на источник.

 

MS1. Сумма всех нечетных чисел в диапазоне.

Задача

Необходимо суммировать все нечётные целые числа в диапазоне, который введёт пользователь с клавиатуры.

Тесты

Начало диапазона Конец диапазона Вывод
1 11 36
2 8 15
7 30 216

Решение

Задача(2)

MS13. Решение квадратных уравнений

Постановка задачи
Каждая четвёрка чисел входного потока представляет собой квадратное уравнение в такой форме [latex]ax^2+bx+c=d.[/latex] Выпишите через запятую решения этих уравнений (если это возможно).

Входные данные:
значения переменных

Выходные данные:
корни [latex]x_{1}[/latex], [latex]x_{2}[/latex], [latex]x_{3}[/latex] и нет корней

Тесты

Входной поток чисел Корни уравнений
1 2 -3 4 1 0 13 10 0 нет корней;
2 2 -0.5 2.2 0 5 0 -25 0 нет корней; -2.23607, 2.23607;
3 1 3 -4 -1 2 -7 11 0 -3.79128784747792, 0.7912878474779199; нет корней;

Решение

Ссылка на решение задания на онлайн компиляторе Ideone.com

Описание решения

Объявляем переменные a, b, c, d, D, x1x2, x3 типа double, где a, b, c, d — коефициенты квадратического уравнения, D — дискриминант, а x1x2, x3 — корни. Создаем цикл while, в котором производится решение квадратического уравнения. В нем проверяем, если дискриминант больше нуля, выводим корни x1 и x2. Если дискриминант равен нулю, то находим x3, иначе, если дискриминант отрицателен — не имеем корней (no roots).

А136в

Задача

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

Тесты

     n [latex]a_1,\ldots, a_n[/latex] Результат
 1      3   3.31  -2.11   8.21     13.63
 2      6  -12.1  -2.56  9  5  -2  4     34.66
 3      2    -3.65  -3.11      6.76

Решение

Проверить работу кода можно в облаке по ссылке — Ideone.

Пояснения

С начала вводим количество элементов  [latex]n[/latex], после чего, в цикле по  i  от 1 до [latex]n[/latex] вводим элементы и суммируем их значение по модулю в переменную  sum , по выходу из цикла выводим сумму в консоль.

A153.Потоковая обработка

Условие
Даны натуральное число [latex]n[/latex], действительный числа [latex]x[/latex], [latex]a_{n}, a_{n-1}, \ldots, a_{0}[/latex]. Вычислить используя схему Горнера, значение [latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0}.[/latex] [latex]a_{n}{x}^{n} + a_{n-1}{x}^{n-1} + \cdots + a_{0} = \left( \ldots \left(a_{n}{x} + a_{n-1}\right)x + \cdots + a_{1}\right)x + a_{0}.[/latex]

$latex n$ $latex x$ $latex { a }_{ n }$ $latex { a }_{ n-1 }$ $latex { a }_{ n-2 }$ $latex { a }_{ n-3 }$ $latex s$
3 2 5 4 3 2 64
2 1 3 4 7 _ 14
3 0 3 4 12 8 8
3 5 0 10 12 8 318
1 5 2 1 _ _ 11

Решение
Начинаем с коэффициента с рядом с $latex X$-ом c максимальной степенью, у нас это элемент $latex { a }_{ n }$, мы последовательно умножаем его (коэффициент) на $latex X$, а потом прибавляем следующий считанный коэффициент и сохраняем полученное значение в переменной.
Это был пример решения для$latex n$=2 , если же$latex X$ > 2 , то мы должны выполнить алгоритм для $latex n$=2, после чего $latex X$ — 2 раз умножать полученное в переменной значение на $latex X$ и прибавлять последующий элемент.

Ideone.com

А137г

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

Решение. Вводим переменную [latex]n[/latex], переменную a(куда будем считывать наши числа), а так же [latex]f[/latex]-произведение введенных чисел. Каждый раз в цикле уже введенные числа умножаются на следующее число взятое с противоположным знаком, а изначально [latex]»f»[/latex] равна [latex]»-1″[/latex] так как «Очередное произведение отличается от предыдущего сомножителем [latex](-a_{i})[/latex]».

Тесты:
[latex]n=3[/latex]

Числа[latex](a_{n})[/latex] Результат
1 1
2 -2
3 6
[latex]n=7[/latex]
Числа[latex](a_{n})[/latex] Результат
1.8 1.8
3.9 -7.02
0.0001 0.000702
-79 0.055458
456.98 -25.3432
0.9001 22.8114
4 -91.2456

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

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