OCPC-2021. Задача G. Электрик возвращается (код решения)

Условие

Электрик Геннадий, постоялец палаты номер 404 заведения «Покосившийся Скворечник», прокрался ночью к ближайшей ЛЭП, чтобы наконец воплотить в жизнь свой план – отрезать кусок провода, находящийся между двумя соседними опорами, и отомстить лживой розетке из предыдущей задачи.

Он планирует реализовать это следующим образом: сначала просто забраться на вершину одной из опор, отрезать провод, закреплённый там, после чего спуститься на некоторую высоту вниз, возможно до земли. Далее Геннадий рассчитывает воспользоваться способностями человека-паука, которые, по его убеждению, открылись в нём после недавнего удара током: он выстрелит паутиной в некоторую произвольную точку соседнего столба, оттолкнется от первого столба и спустится по дуге окружности либо до второго столба, либо до земли. Разница высот в начале и конце такого спуска не должна превышать некоторую величину $l$, иначе наш новоявленный человек-паук рискует слишком сильно разогнаться и превратиться в человека-лепёшку. Затем электрик поднимется на вершину второго столба, чтобы отрезать закреплённый там провод, и спустится на землю.

Высоты столбов – $h_1$ и $h_2$, расстояние между ними – $d$. Геннадий не очень любит лазать вверх, поэтому он хочет разработать план таким образом, чтобы суммарная дистанция подъёмов была минимально возможной. Раз уж Вы взялись помогать ему, то доведите начатое до конца!

Единственная строка ввода содержит четыре целых числа $d$, $h_1, h_2, l$ $(1 \leqslant d, h_1, h_2, l \leqslant 10^6)$.

Выведите одно число – минимальную суммарную дистанцию подъёма Геннадия с точностью не хуже $10^-5$.

Тесты

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

5 5 5 5 10.00000
4 5 8 5 10.00000
4 8 5 1 13.00000
3 4 6 1 9.00000
15 2 7 8 9.00000
2 5 7 11 7.82843
1 35 38 2 38.16228

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

Решение

Во-первых, поймем, что выгоднее сначала забраться на более низкий столб. Действительно, предположим, $h_1 \gt h_2$ и начинать электрик Геннадий будет с первого столба.

Заметим, что если Геннадий применит навыки человека-паука, то не сможет оказаться на втором столбе выше, чем $h_2-d$ (т.е. не выше точки $E_1$), поскольку перелетать он будет по дуге окружности, радиус которой не меньше $d$. С другой стороны, начиная с более низкого столба, он сможет перелететь в точку $E_3$ (предполагаем, что возможность воспользоваться способностью есть). При этом $H_1E_3=H_1H_2$.
Теперь сравним суммарное расстояние подъемов вверх по столбам. Если начинать с более высокого, то: $AH_1+H_2E_1=AE+H_1E+EH_2$.

С другой стороны, начиная с более низкого, получим:
$BH_2+E_3H_1=BH_2+H_1H_2$.
Заметим, что $BH_2=AE$, а по неравенству треугольника $H_1E+EH_2 \gt H_1H_2$. Отсюда и получаем, что начинать с более низкого столба экономнее.
В случае же, когда способность человека-паука применить нельзя или с её помощью Геннадий спускается до земли, не имеет значения, с какого столба начинать. Поэтому будем считать, что $h_1 \leqslant h_2$.

Забраться на более низкий столб обязательно входит в итоговую сумму. Кроме того, Геннадию либо надо будет подниматься на высоту, равную длине паутины (т.е. радиусу окружности), либо просто подняться на второй столб.

Для удобства обозначим $h_2-h_1$ через $\Delta h$, а отрезок $H_1H_2$ через $r$.
Чтобы была возможность использовать способность человека-паука, мы хотим добиться того, чтобы выполнялось следующее неравенство:
$$r — \Delta h \leqslant l $$.
Будем считать, что $h_1$ — это не высота первого столба, а высота, с которой Геннадий перелетать на второй столб (понятно, что ради удовлетворения ограничения $l$ Геннадий может только начать спускаться вниз).

Из треугольника $\Delta EH_1H_2$ выражаем $r$ :
$$r = \sqrt{d^2+\Delta h^2}.$$

Тогда неравенство принимает вид:
$$\sqrt{d^2+\Delta h^2)-\Delta h} \leqslant l,$$
$$d^2+\Delta h^2 \leqslant \frac{d^2 — l^2}{2l},$$
$$h_1 \leqslant h_2 — \frac{d^2 — l^2}{2l}.$$

Теперь понятно, что высота, с которой Геннадию надо стрелять паутиной, будет меньшим значением между выражением в правой части неравенства и высотой первого столба (в случае, если полученное нами выражение больше высоты столба, мы понимаем, что «стрелять» надо с только вершины столба).

Далее остается исключить случай, когда наше выражение отрицательное (что соответствует случаю, в котором Геннадию надо спуститься на землю и пешком перейти ко второму столбу или же на паутине перелететь только до земли, т.к. для того, чтобы совершить прыжок, удовлетворяющий ограничение $l$, герою необходимо спуститься на высоту ниже уровня земли, что невозможно).

Далее остается вычислить длину паутины по формуле $ r = \sqrt{d^2+\Delta h^2},$ принимая в качестве $h_1$ высоту, с которой надо стрелять паутиной, и прибавить полученную величину к высоте первого столба.

Решение задачи на ideone.com

Ссылка на контест

Related Images:

e-olymp 919. Номер на 3

Задача

Условие

Задана последовательность действительных чисел $a_{1}$, $a_{2}$,…, $a_{n}$. Определить сумму и количество положительных элементов, индексы которых делятся на $3$ без остатка.

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

В первой строке задано количество элементов $n$ ($n \leq 100$) в последовательности. В следующей строке находится $n$ вещественных чисел, значение каждого из которых по модулю не превышает $100$.

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

В одной строке вывести количество искомых элементов и их сумму, вычисленную с точностью до двух десятичных знаков.

Тесты

Входные данные Выходные данные
1 6
6 7.5 2.1 2.0 0 -3
1 2.10
2 3
12 0.33 -14
0 0.00
3 1
-3.4
0 0.00
4 12
0 15.3 -1 144 0.333 17.5 -69 456 2.5 0 3 13
3 33.00

Решение

Для решения этой задачи необходимо просмотреть все элементы последовательности и выбрать из них те, номера которых кратны трём, а сами элементы положительны. Далее вычисляем количество таких чисел и их сумму.
В данной реализации используются цикл и условный оператор. Также необходимо задать точность. Для этого используем функцию setprecision().

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

Ссылки

Related Images:

e-olymp 165. Симметрия

Задача

Предприимчивая и умелая рукодельница решила подзаработать изготовлением «фенечек» из бисера. Любительница симметрии в искусстве, она использовала в своих орнаментах бусинки разных цветов (будем обозначать цвет целым положительным числом) по следующим правилам:

1) при длине ряда рисунка равной [latex]1[/latex] использовала бусинку первого цвета;

2) при длине ряда рисунка равной [latex]3[/latex] использовала бусинки двух цветов: [latex]1 2 1[/latex];

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

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

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

В первой строке целое число [latex]k[/latex] [latex] (1 ≤ k ≤ 10^9) [/latex] – номер бусинки, цвет которой нужно определить, в ряду рисунка. Нумерация бусинок в ряду начинается с единицы.

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

В первой строке одно целое число – номер цвета заданной бусинки.

 

Тесты

# ВХОДНЫЕ ДАННЫЕ ВЫХОДНЫЕ ДАННЫЕ
1 [latex]10[/latex] [latex]2[/latex]
2 [latex]116[/latex] [latex]3[/latex]
3 [latex]1[/latex] [latex]1[/latex]
4 [latex]454[/latex] [latex]2[/latex]
5 [latex]12301230[/latex] [latex]2[/latex]

 

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

 

Решение задачи

Рассматривая ряды с большим количеством цветов можно заметить закономерность: каждый чётный элемент равен единице, каждый последующий новый цвет будет на месте [latex]n·2[/latex]. Отсюда следует соответствие [latex]n[/latex] и [latex]2^{n-1}[/latex]. Формула для нахождения среднего элемента — [latex]\log_{2}n[/latex]. Программа будет искать средний элемент всегда, пока не найдёт нужный нам. Для чисел, из которых целый логарифм извлечь нельзя, найдем ближайший к нему и от числа отнимем [latex]2[/latex] в степени [latex]\log_{2}n[/latex]. К полученному ответу добавляем единицу, из-за приведённой ранее формулы [latex]2^{n-1}[/latex], и получаем правильный ответ.

Ссылки

• Задача на e-olymp.

• Решение на сайте ideone.

Related Images:

A305

Задача A305

Условие задачи

Даны действительные числа [latex]a_{1},\dots,a_{n}[/latex]. Оставить без изменения последовательность [latex]a_{1},\dots,a_{n}[/latex], если она упорядочена по неубыванию или по невозрастанию; в противном случае удалить из последовательности те члены, порядковые номера которых кратны четырём, сохранив прежним порядок оставленных членов.

Тестирование

Входные данные Выходные данные
1. 5
-1 2 3 4 5
-1 2 3 4 5
2. 6
6 0 2 3 4 6.7
0 2 3 6.7
3. 10
1 2 5 7 -10 3 1 3 2 1
2 5 7 3 1 3 1
4. 5
1 5 6 7.5 0
5 6 7.5
5. 3
-23 46 -80
46 -80

Реализация

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

Считываем все действительные числа до конца входного потока и записываем их в вектор v1. Проверяем, упорядочена ли последовательность по возрастанию или по убыванию. Если да, выводим на экран исходную последовательность без изменений с помощью функции copy() и итератора вывода ostream_iterator, который записывает элементы последовательно в выходной поток. Если же последовательность не упорядочена ни по убыванию, ни по возрастанию, удаляем из неё элементы, порядковые номера которых кратны четырём. Важно сохранить прежним порядок оставленных членов.
Работаем следующим образом:
1. Создаём вектор v_2.
2. Уменьшаем размер контейнера с помощью функции resize(): v2.resize(size_of_the_sequence - temp). Инициализируем переменную  size_of_the_sequence значением ноль.
3. Если порядковый номер элемента неупорядоченной последовательности кратен четырём, то увеличиваем количество элементов на единицу с каждой итерацией. Иначе, присваиваем вектору v_2 значение вектора v_1: v2[i - size_of_the_sequence] = v1[i].
4. Уменьшаем размер контейнера v_1. Присваиваем вектору v_1 значение вектора v_2.
5. С помощью функции shrink_to_fit() уменьшаем количество используемой памяти вектора v_1.
6. Извлекаем все элементы из вектора v_2 с помощью функции clear().

Для запроса на выполнение следует перейти по ссылке.

Related Images:

A294

С.А.Абрамов. Задачи по программированию.

Задача

Даны действительные числа [latex]r_{1},\ldots,r_{n}[/latex], среди которых заведомо есть как отрицательные, так и не отрицательные. Получить [latex]x_{1}y_{1}+\ldots+x_{s}y_{s}[/latex], где [latex]x_{1},\ldots,x_{p}[/latex] — отрицательные члены последовательности [latex]r_{1},\ldots,r_{n}[/latex], взятые в порядке следования, [latex]y_{1},\ldots,y_{q}[/latex] — неотрицательные члены, взятые в обратном порядке, [latex]s=min\left ( p,q \right )[/latex] .

Тесты

 Входные данные Выходные данные
 -1 1  -1
 -1  0
-1 -1  0
 1 2 -5 10 -2  -54
 4 6 3 4 -8 2 7 5  -40

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

ideone.com

Решение

Считывая числа из входного потока, выполняем проверку и записываем положительные в вектор [latex]y[/latex], отрицательные — в вектор [latex]x[/latex]. Затем вычисляем [latex]s[/latex]. Вычисляем [latex]x_{1}y_{1}+\ldots+x_{s}y_{s}[/latex].

Related Images:

A304

Задача
Даны действительные числа [latex]a_{1},a_{2},\cdots[/latex] (читать до конца входного потока). Переставить члены последовательности так, чтобы сначала расположились все ее неотрицательные члены, а потом  — все отрицательные. Порядок как среди неотрицательных членов, так и среди отрицательных должен быть сохранен прежним.
Код программы
Тесты

Test № Input Output
1 -23 45 17 -78 0 34 45 17 0 34 -23 -78
2 -56 -56.34 0.2 56 9 0.2 56 9 -56 -56.34
3  -1 3 2 1 0 -3 -2 3 2 1 0 -1 -3 -2
4 -0.333 -1 0 1 0 -2 0 2 0 1 0 0 2 -0.333 -1 -2
5 9 -9 0 -96 -11 27 -13 9 0 27 -9 -96 -11 -13

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

Считываем все действительные числа до конца входного потока и записываем их в один вектор. Создаем еще два вектора. В один из них будем записывать неотрицательные члены последовательности, содержащиеся в первом векторе, а в другой — отрицательные. Так как в условии задачи сказано, что сначала нужно вывести все неотрицательные члены последовательности, а затем — отрицательные, то к вектору с положительной частью последовательности добавляем в конец вектор с отрицательной частью последовательности и выводим результат.

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

 

Related Images:

А282б

Условия задачи

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

Данную задачу можно найти здесь.

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

Последовательность действительных чисел [latex]a_{1}[/latex], [latex]a_{2}[/latex], [latex]\ldots[/latex], [latex]a_{2n}[/latex].

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

Последовательность действительных чисел [latex]a_{1}[/latex], [latex]a_{2n}[/latex], [latex]a_{2}[/latex], [latex]a_{2n-1}[/latex], [latex]a_{3}[/latex], [latex]\ldots[/latex], [latex]a_{n}[/latex], [latex]a_{n+1}[/latex] .

Тесты

Входные данные Выходные данные
1 1 2 3 4 5 6 1 6 2 5 3 4
2 0 0 0 0 0 1 0 1 0 0 0 0
3 3 12 42 -6 15 0 0 0 501 20 20 20 3 20 12 20 42 20 -6 501 15 0 0 0
4 42 0 17 -2.6 -54 41888 0.25 13 1.3333 -284.73 42 -284.73 0 1.3333 17 13 -2.6 0.25 -54 41888
5 0 1 -1 0 1 -1 97 113 -7.777 0 48 -69 0 -69 1 48 -1 0 0 -7.777 1 113 -1 97

Код

Код на ideone можно найти здесь.

Ход решения

Считываем все числа из входного потока и записываем их в вектор исходной последовательности sequence. Результатом работы нашей программы должна быть новая последовательность действительных чисел result_sequence, которая задаётся по следующему правилу: первый член новой последовательности совпадает с первым членом исходной, второй член новой последовательности является последним членом исходной, третий – второй член исходной и так далее до исчерпания чисел. Иными словами, новая последовательность из [latex]2n[/latex] чисел на нечётных номерах имеет члены исходной последовательности (от первого и до [latex]n[/latex]-го включительно), чётным же номерам новой последовательности соответствуют члены исходной с номерами от [latex]n+1[/latex] до [latex]2n[/latex] включительно, записанные в обратном порядке.

Related Images:

A278

Задача A278

Условие задачи

Даны натуральные числа [latex]n_{1},\dots,n_{m}[/latex], действительные числа [latex]x_{1},\dots,x_{m}[/latex]. Вычислить [latex]\frac{n_{1}\cdot x_{1}+\dots+n_{m}\cdot x_{m}}{n_{1}+\dots+n_{m}}[/latex].

 

Тестирование

Входные данные Выходные данные
1. 1 2 4 -1 -0.4
2. 1 2 3 4 5 0.6 1.88889
3. 5 -2 1 0.2 3 -3 2 0 -1.70909
4. 10 3.3 4 0.4 6 0.01 8 1 1 8 1.7469
5. 3 -0.5 2 -0.4 1 -0.3 5 32 11 5 20 -1 4.58095

Реализация (класс vector)

Алгоритм решения (класс vector)

Считываем все натуральные числа до конца входного потока и записываем их в вектор [latex]n[/latex]. Аналогично, считываем все действительные числа до конца входного потока и записываем их в вектор [latex]x[/latex].

  1. Вычисляем значение выражения [latex]n_1\cdot x_1+\dots+n_m\cdot x_m[/latex], накапливая сумму sum1.
  2. Вычисляем значение выражения [latex]n_1+\dots+n_m[/latex], накапливая сумму  sum2.
  3. Находим результат res от деления sum1 на  sum2.

Реализация (потоковая обработка)

Алгоритм решения (потоковая обработка)

Считываем все натуральные числа до конца входного потока и записываем их в переменную member1. Аналогично, считываем все действительные числа до конца входного потока и записываем их в переменную  member2.
Пока вводятся данные:

  1. Вычисляем значение выражения [latex]n_1\cdot x_1+\dots+n_m\cdot x_m[/latex], накапливая сумму sum1.
  2. Вычисляем значение выражения [latex]n_1+\dots+n_m[/latex], накапливая сумму  sum2.
  3. Находим результат res от деления sum1 на  sum2.

Для запроса на выполнение следует перейти по ссылке (класс vector).

Для запроса на выполнение следует перейти по ссылке (потоковая обработка).

Related Images:

A279

Задача

Даны действительные числа [latex]a_{1},[/latex] … [latex], a_{n},[/latex] [latex]b_{1},[/latex] … [latex], b_{n}[/latex]. Вычислить [latex](a_{1} + b_{n})(a_{2} + b_{n-1})[/latex] … [latex](a_{n} + b_{1})[/latex].
Тесты
Test № Input Output
1  1 2 3 4 5 6  343
2  1 1 1 1  4
3  0.5 0.1 0.07 -4 7 13  -376.691
4  0 0 0 0 0 0 0 0  0
5  0.4 0.3 2 -1 0.7 0.6  1

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

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

 Считываем все действительные числа до конца входного потока и записываем их в один вектор c. Далее работаем по такому алгоритму: складываем первый элемент вектора с последним, а полученный результат умножаем на переменную result, значение которой изначально равно единице, т.к, единица  — нейтральный элемент при умножении. Далее складываем второй элемент вектора с предпоследним, а полученный результат снова умножаем на переменную result и т.д. Так делаем до тех пор, пока не дойдем но середины вектора  c. Затем выводим полученное значение переменной  result.

Related Images:

A39

Даны два действительных числа. Вывести первое число, если оно больше второго, и оба числа, если это не так.

Код

Тесты

Входные данные Выходные данные
x y
3 2 3
10 5 10
30 20 30
50 30 50

Решение

Пусть даны два действительных числа x, y. Для ввода x и y используем тип double для действительных чисел. Задаем условие, если первое число больше второго, используя оператор if. Выводим первое число x.

Вводим else, если это не так. Выводим оба числа.

Код задачи

Ideone.com

Related Images:

Mif2

Даны действительные числа [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Получить [latex]max (x, y, z)[/latex].

 

Тесты

Входные даные Выходные даные
x y z
3 5 9 9
23 32 53 53
73 80 90 90
97 100 110 110
220 298 393 393

Решение

Пусть даны действительные числа [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Нужно получить [latex]max(x,y,z)[/latex]. Для этого вводим [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Предполагаем, что z хранит максимальное значение. Затем, используя оператор if, сравниваем y, x. Выводим максимальное значение.

Код программы ideone.com

Условие задачи

Related Images:

Mif4

Задача

Даны действительные числа x, y, z. Проверить, выполняются ли неравенства x < y < z.

Решение

Нам даны действительные числа x, y, z и нужно проверить выполняются ли неравенства x < y < z. Для этого нам нужно проверить будут ли выполняться такие неравенства: [latex] x<y[/latex]  и  [latex] y<z [/latex].

Код

Тесты

Входные данные Выходные данные
3 4 6  right
9 1 3 wrong
5 4 3 wrong

 

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

Здесь можно найти код программы на Ideone.com.

Related Images:

ML2

Даны действительные числа [latex]x[/latex] и [latex]y[/latex].
Получить[latex]\frac{|x|-|y|}{|x|+|y|}[/latex] .

Код

Тесты

Входные данные Выходные данные
x y
6 4 0,2
6 2 0,5
2 2 0
1 1 0

Решение

Пусть заданы действительные числа x, y. Включаем cmath — заголовочный файл стандартной библиотеки языка программирования C++, разработанный для выполнения простых математических операций. В нашем случае деления одного выражения на другое. Используем тип double для действительных чисел для ввода x, y. Вводим с помощью cin x, y. Выводим с помощью cout математическое выражение, используя abs — функция, которая вычисляет абсолютную величину (модуль) значения x и y.

Код задачи

http://ideone.com

Условие задачи

http://mazurok.com

Related Images:

А136и

Задача. Даны натуральное число n, действительные числа [latex]a_{1}, a_{2}, \dots, a_{n}[/latex] Вычислить [latex] \frac{a_{1}}{0!} + \frac{a_{2}}{1!} + \cdots + \frac{a_{n}}{(n-1)!} [/latex]

Тест

Число-n Действительные числа Результат
5 4 5 6 7 8 13,5
7 5 4 7 9 2 8 3 14,1542
3 6 9 3 16,5

Программа:

  1. Вводим n, a (действительные числа);
  2. Вычисляем минор;
  3. Задаем массив;
  4. Делим на факториал и суммируем;
    Ссылка на программу

Related Images:

А136м

Задача.

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

Вычислить: [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex]

Тест

[latex]n[/latex] последовательность результат (wolframalpha)
1 0 0
1 1000 0.82688
1  -100 0.505366
3 -100 1000 -100 0.89397
5 1 2 3 4 5 0.650287

Я показала , что период не [latex]\pi [/latex] , а [latex]2\pi [/latex] . Период  [latex]\pi [/latex]  был бы в случае [latex]\left|\sin a_{1}+…+a_{n} \right|[/latex] , а у нас  [latex]\sin \left|a_{1}+…+a_{n} \right|[/latex] . Вот графики :

6WSmLvYnzY4

zATL68loKls

 

Ссылка на программу: http://ideone.com/ICxfXU

Решение:

Переменной [latex]sum[/latex] присваиваем значение [latex]0[/latex]. Вводим элемент [latex]a[/latex], который мы будем суммировать в цикле до [latex]n[/latex]:

Далее вводим в input соответствующие значения [latex]a[/latex] и получаем ответ.

 

Related Images:

А36

Задача: Даны действительные числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex]Проверить, выполняются ли неравенства  [latex]a<b<c[/latex].

Тесты:

Ввод Вывод Результат
a b c неравенство                     не выполнено
2 1 3 b<=a<c: нер-во a<b<c                 не выполняется неравенство                     не выполнено
1 3 2 a<=c<=b: нер-во a<b<c                 не выполняется неравенство                     не выполнено
3 1 2 b<=c<=a: нер-во a<b<c                 не выполняется неравенство                     не выполнено
3 2 1 c<=b<=a: нер-во a<b<c                 не выполняется неравенство                     не выполнено
2 3 1 c<=a<b: нер-во a<b<c                 не выполняется неравенство                     не выполнено
1 2 3 нер-во a<b<c справедливо неравенство выполнено

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

Отчет:

После ввода чисел a, b, c программа проверит их соотношения. Ввиду наличия трех сравниваемых чисел имеем 3! = 6 возможных комбинаций чисел, и только одна из них соответствует требованию. Если неравенство [latex]a<b<c[/latex] имеет место быть, то программа сообщит о его выполнении. В противном же случае консоль выдаст ответ о не выполненном неравенстве, предварительно сообщив причину.

Копия кода на сайте Ideone: ideone.com/aYmMJ2

Related Images:

А48

Задача:

Даны действительные числа [latex]a[/latex], [latex]b[/latex], [latex]c[/latex] ([latex]a[/latex]≠0). Выяснить, имеет ли уравнение [latex]ax^2 + bx + c = 0[/latex]  действительные корни. Если корни имеются, то найти их. В противном случае ответом должно служить сообщение, что корней нет.

Тесты:

Ввод: Вывод: Результат
a b c
0 *ввод не доступен* *ввод не доступен* неверный ввод Нарушено первоначальное условие, дальнейший ввод не доступен
1 -3 2 уравнение имеет два действительных корня:x1=1.00×2=2.00 уравнение обладает двумя действительными корнями, которые были найдены
9 54 81 уравнение имеет один действительный корень:x0=-3.00 уравнение обладает единственным действительным корнем, который был найден
3 11 19 уравнение не имеет действительных корней корни уравнения отсутствуют
 4  21  24 уравнение имеет два действительных корня:x1=-6.73×2=-14.27 уравнение обладает двумя действительными корнями, которые были найдены
 -2 -3.7 5 уравнение имеет два действительных корня:x1=5.51×2=-1.81 уравнение обладает двумя действительными корнями, которые были найдены

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

 

Отчёт:

В случае, если параметр не равен нулю, программа позволяет ввести последующие параметр b и константу c. После этого программа ищет дискриминант D по формуле [latex]b^2-4ac[/latex]. Если дискриминант меньше нуля, то программа выдаст сообщение об отсутствии действительных корней в уравнении. Если же дискриминант равен нулю, тогда получим сообщение о наличии единственного корня  уравнения x0, который будет посчитан по формуле [latex]\frac{-b}{2a}[/latex]. В случае, когда дискриминант больше нуля, программа сообщит, что у уравнения есть два действительных корня, после чего будет посчитан корень от дискриминанта d для удобства нахождения первого корня x1: [latex]\frac{-b+d}{2a}[/latex], а затем второго x2: [latex]\frac{-b-d}{2a}[/latex]. Оба корня будут выведены на экран.

Ссылка на дубликат кода в Ideone: http://ideone.com/ZQv9AS

Related Images:

А38

Задача. Даны действительные числа [latex]x[/latex], [latex]y[/latex]. Вычислить [latex]z[/latex]:

[latex]z=\begin{cases} x-y & \text{ if } x > y \\ y-x+1 & \text{ if } x \leq y \end{cases}[/latex]
x y z Комментарий
18 85 68 Тест пройден
5 4 1 Тест пройден
-16 83 100 Тест пройден
16 16 1 Тест пройден

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

 

Задача выполняется в три этапа:

1.Ввод значений [latex]x[/latex] и [latex]y[/latex]

2. Сравнение значений [latex]x[/latex] и [latex]y[/latex] для выбора решения задачи согласно с условием.

3.Вывод значения  [latex]z[/latex].

Для выполнения программы и проверки тестов вы можете воспользоваться этой ссылкой

Related Images:

А59ж

Задача

Даны действительны числа [latex]x[/latex] , [latex]y[/latex]  . Определить , принадлежит ли точка с координатами  [latex]x[/latex] , [latex]y[/latex] заштрихованной части плоскости .

Безымянный

Тесты:

x y результат комментарий
-1.5 1 outside пройден
-0.5 0.5 inside пройден
0.5 0.5 inside пройден
1.5 1.5 outside пройден
-0.5 -0.5 inside пройден
-1 -1.5 outside пройден
1 -1.5 outside пройден
 

Ссылка на код C++ : http://ideone.com/JKdLjg

Ссылка на код Java : http://ideone.com/kWAdw2

Решение :

Решение задачи сводится к поиску условия, при котором точка будет принадлежать данной части плоскости. Далее вводим оператор условия «if» и ставим ограничения на [latex]x[/latex] и [latex]y[/latex].

Анализируем условие , при каких значениях [latex]x[/latex] и [latex]y[/latex] точка будет принадлежать условию , а при каких нет.Если вошла точка по координатам во все области -> точка принадлежит треугольнику или же наоборот .

 

Related Images:

А59в

Задача. Даны действительные числа   [latex]x[/latex] и [latex]y[/latex]. Определить, принадлежит ли точка [latex]x[/latex] ,[latex]y[/latex]заштрихованной области.

VbnLavS7Azw

х у результат комментарий
0 0 принадлежит пройдено
0.5 1 принадлежит пройдено
-2 -5 не принадлежит пройден

Код программы на языке C++:

Код программы на языке Java:

Ccылка на программу на языке Java: http://ideone.com/QBb6dQ

Решение

Решение задачи сводится к поиску условия, при котором точка будет принадлежать данной части плоскости. Далее вводим  оператор  условия «if» и ставим  ограничения на [latex]x[/latex] и [latex]y[/latex].

Анализируем наше условие, при каких значениях  [latex]x[/latex] и [latex]y[/latex] точка будет принадлежать заштрихованной плоскости, а в  каких нет.

 

 

Related Images: