Ю2.2

Задача: Треугольник задан длинами своих сторон: a, b, c. Определить, является ли он тупоугольным, прямоугольным или остроугольным.

Тесты:

угол №1 угол №2 угол №3 Результат Комментарий
30 60 90 треугольник прямоугольный тест пройден
60 60 60 треугольникостроугольный равностороннийравнобедренный тест пройден
70 70 40 треугольникостроугольный равнобедренный тест пройден
45 90 45 треугольник прямоугольный равнобедренный тест пройден
80 20 80 треугольникостроугольный равнобедренный тест пройден
30 120 30 треугольник тупоугольный равнобедренный тест пройден
50 90 150 треугольник не существует тест пройден
120 150 160 треугольник не существует тест пройден

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

 

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

1) Вводим данные стороны a,b,c;

2) Вводим условия для выполнимости определения треугольников (ограничения для углов):

а) для остроугольных

б) для равносторонних

в) для прямоугольных

г) пишем условие, при котором выполняется для тупоугольных треугольников

д) для равнобедренных

е) если ни одно из условий не выполняется, значит треугольника не существует

Посмотреть и протестировать программу можно на этом сайте: http://ideone.com/uAyr4x

 

Related Images:

Ю2.9

Задача: Может ли шар с радиусом [latex] r [/latex] пройти через ромбообразное  отверстие с диагоналями [latex]p[/latex] и [latex]q[/latex]?

r p q a b c h Результат Коментарий
5 40 10 20 5 20,6255 4,8483 Не пройдет Пройден
4 20 14 10 7 12,2066 5,7346 Пройдет Пройден
3 6 8 3 4 5 2,4 Не пройдет Пройден
1 4 16 2 8 8,2462 1,9403 Пройдет Пройден
Чтобы решить эту задачу нам нужно найти высоту [latex]h[/latex], проведенную. из вершины прямого угла прямоугольного треугольника, катеты которого равны половинам диагоналей ромба.

Катеты [latex]a=\frac{p}{2}[/latex] и [latex]b=\frac{q}{2}[/latex].

Гипотенуза   [latex]c=\sqrt{a^{2}+b^{2}}[/latex].

Затем по формуле [latex]h=\frac{ab}{c}[/latex] найдем высоту треугольника.

Чтобы шар прошел через ромбообразное отверстие, нужно чтобы [latex]r\leq h[/latex].

Если [latex]r>h[/latex], то шар не пройдет через ромбообразное отверстие.

 

Посмотреть работу программы можно тут.

Related Images:

А55

Задача. Даны действительные положительные числа [latex]a, b, c, d[/latex]. Выяснить, можно ли прямоугольник со сторонами [latex]a, b[/latex] уместить внутри прямоугольника со сторонами [latex]c, d [/latex] так, чтобы каждая из сторон одного прямоугольника была параллельна или перпендикулярна каждой из сторон второго прямоугольника.

Тесты:

c d a b Результат Комментарий
4 6 5 5 Нельзя разместить Пройден
4 8 7 3 Можно разместить Пройден
23 45 87 23 Нельзя разместить Пройден
15 33 15 12 Можно разместить Пройден
7 9 7 13 Нельзя разместить Пройден

Код на С

Код на Java

 

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

Ознакомиться с кодом на С можно здесь, а с кодом на Java здесь.

Related Images:

А34б

Задача: Даны действительные числа [latex]x,y,z[/latex] Вычислить:
[latex]\min\left(x,y,z\right)[/latex] [latex]\max\left(x,y,z\right)[/latex]

Ввод Вывод
[latex]x[/latex] [latex]y[/latex] [latex]z[/latex] Output Комментарий
0 0 0 Max — 0
Min — 0
Пройден
1 2 3 Max — 3
Min — 1
Пройден
3 2 1 Max — 3
Min — 1
Пройден
10.1 10.01 10.001 Max — 10.1
Min — 10.001
Пройден
12345.12345 12345.123445 12345.12346 Max — 12345.123456
Min — 12345.123445
Пройден
0.001 0.0009 0.00099 Max — 0.001
Min — 0.0009
Пройден

Идея решение: Сохранить в переменную [latex]\min[/latex] и [latex]\max[/latex] числа, соответствующие минимальному и максимальному из данного набора, полученных путем (довольно сложных) вычислений с применением вложенных в тернарные операции тернарных операций.

 

Related Images:

Ю2.13

Задача: Проверить, лежит ли окружность [latex]{(x-{a}_{1})}^{2}+{(y-{b}_{1})}^{2}={r}_{1}^{2}[/latex] целиком внутри окружности [latex]{(x-{a}_{2})}^{2}+{(y-{b}_{2})}^{2}={r}_{2}^{2}[/latex] или наоборот.

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

Ввод Вывод
[latex]a_{1}[/latex] [latex]b_{1}[/latex] [latex]r_{1}[/latex] [latex]a_{2}[/latex] [latex]b_{2}[/latex] [latex]r_{2}[/latex]  Печать Комментарий
 0  0  0  0  0  0  2 в 1  Пройден
 0  0  3  0  0  1  2 в 1  Пройден
 0  0  2  0  0  5  1 в 2  Пройден
 1  1  3  3  1  1  2 в 1  Пройден
 2  2  3  6  2  4  ——  Пройден
 24  27  51  96  48  20  ——  Пройден

Код:

Идея решение: Расстояние между центрами окружностей [latex]({a}_{1};{b}_{1})[/latex] и [latex]({a}_{2};{b}_{2})[/latex] должно быть меньше, чем модуль разности их радиусов [latex]\left|{r}_{1}-{r}_{2}\right|[/latex]. Это условие необходимо и достаточно для того, чтобы одна из окружностей была вложена в другую.

Related Images:

А35б

Даны действительные числа [latex]x,y,z[/latex].Вычислить [latex]min^2(x+y+\frac{z}{2},xyz)+1[/latex]

x y z m
4.8 5.7 2.1 134.40250
0 0 0 1
-3.21 2.89 4.25 1555.47453

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

Код на Java:

 

Вводим числа [latex]x,y,z[/latex]. Вычисляем [latex]a=x+y+\frac{z}{2}[/latex]. Вычисляем [latex]b=xyz[/latex].Сравниваем два числа и присваиваем [latex]min[/latex] минимальное из значений.
Вычисляем  [latex]m=min^2+1[/latex].

Запустить код на С++ и проверить тесты можно тут.
Запустить код на Java и проверить тесты можно тут.

Related Images:

Ю2.19

Задача

   Привал.

Путник двигался   [latex]t_{1}[/latex]   часов со скоростью   [latex]v_{1}[/latex]  , затем  [latex]t_{2}[/latex]   часов — со скоростью  [latex]v_{2}[/latex]  и  [latex]t_{3}[/latex]  часов — со скоростью   [latex]v_{3}[/latex] .

За какое время он одолел первую половину пути, после чего запланировал привал?

[latex]t_{1}[/latex] [latex]t_{2}[/latex] [latex]t_{3}[/latex]  [latex]v_{1}[/latex]  [latex]v_{2}[/latex] [latex]v_{3}[/latex] Результат Комментарии
2 3 4 90 80 30 3.125 пройдено
9 85 3 450 230 20 42.826 пройдено
 4.5 75.9 3.124 100 0  0  2.25 продено

 

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

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

Расстояние и время вычисляется по формулам:

[latex]s=t\cdot v[/latex]

 

[latex]t=\frac{s}{v}[/latex]

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

 

Ссылка на код здесь.

Второе решение:

ссылка на  код 

Решение на Java:

 

 

Related Images:

Ю2.12

Задача

Планировка. Можно ли на прямоугольном участке застройки размером a на b метров разместить два дома размером в плане p на q и r на s метров? Дома можно располагать только параллельно  сторонам участка.

Ниже представлены одни из возможных вариантов расположения домов на участке:

Илья_задание_01 Илья_задание_04

a b p q r s Ответ
100 150 20 70 25 50 Дома могут быть построены на заданном участке.
20 50 10 60 10 15 Дома не могут быть построены.
50 150 25 150 25 150 Дома могут быть построены на заданном участке.
50 150 50 75 50 75 Дома могут быть построены на заданном участке.
200 300 115 50 110 100 Дома могут быть построены на заданном участке.
2 4 1 3 2 2 Дома не могут быть построены.
2 5 1 3 2 3 Дома не могут быть построены.
2 5 2 2 1 4 Дома не могут быть построены.
3 3 2 2 2 2 Дома не могут быть построены.
2 10 10 1 10 1 Дома могут быть построены на заданном участке при повороте на 90 градусов.
10 2 1 10 1 10 Дома могут быть построены на заданном участке при повороте на 90 градусов.
2 10 1 10 10 1 Дома могут быть построены на заданном участке при повороте дома со сторонами r s на 90 градусов.
10 2 10 1 1 10 Дома могут быть построены на заданном участке при повороте дома со сторонами r s на 90 градусов.
10 2 1 10 10 1 Дома могут быть построены на заданном участке при повороте дома со сторонами p q на 90 градусов.
2 10 10 1 1 10 Дома могут быть построены на заданном участке при повороте дома со сторонами p q на 90 градусов.
2 3 1 1 2 3 Дома не могут быть построены.
2 4 1 1 3 3 Дома не могут быть построены.
2 6 1 3 3 3 Дома не могут быть построены.

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

Всего у нас есть 8 вариантов расположения домов на участке.

Каждый дом можно расположить на участке двумя способами (вертикально или горизонтально). Значит всего четыре различные комбинации их расположения относительно участка. Среди этих четырёх комбинация должна существовать по крайней мере одна в которой дома помещаются. Т.е. либо суммарная ширина домов меньше ширины участка и длина каждого дома меньше его длины, либо суммарная длина домов меньше длины участка и ширина каждого дома меньше ширины участка. Поскольку выполнится должно хоть одно такое условие, то их нужно соединить логическим “или”.

Так же у нас есть 4 различных комбинации размещения домов, в которых один из домов(а может и сразу два) не помещается на участке, но если его развернуть на [latex]90^{\circ}[/latex], то дома успешно разместятся на участке.

Ниже представлен сам код(C++):

Код на Java:

 

Ознакомится с программой можно тут (C++)/тут (Java).

Related Images:

А60б

Задача:  Пусть [latex]D[/latex] — заштрихованная часть плоскости и пусть [latex]u[/latex] определяется по [latex]x[/latex] и [latex]y[/latex] следующим образом ( запись [latex](x, y)\epsilon D[/latex] означает, что точка с координатами [latex]x[/latex], [latex]y[/latex] принадлежит [latex]D[/latex]):

[latex]u=\left\{\begin{matrix}-3, \text{if} (x, y)\epsilon D\\ y^{2} \end{matrix}\right.[/latex]

Даны действительные числа [latex]x[/latex] и [latex]y[/latex]. Определить  [latex]u[/latex].

Код на С++:

 

Тесты:

[latex]x[/latex] [latex]y[/latex] Результат

[latex]u[/latex]

[latex]0[/latex] [latex]0[/latex] [latex]-3[/latex]
[latex]0[/latex] [latex]1[/latex] [latex]1. 00[/latex]
[latex]1[/latex] [latex]0[/latex] [latex]-3[/latex]
[latex]-1[/latex] [latex]0[/latex] [latex]0. 00[/latex]
[latex]0[/latex] [latex]-1[/latex] [latex]-3[/latex]
[latex]0,6[/latex] [latex]0,8[/latex] [latex]0. 64[/latex]
[latex]0,5[/latex] [latex]-0,5[/latex] [latex]-3[/latex]

 

Код на Java:

 

 

Безымянный

Для того, чтобы определить находится ли нужная точка с координатами [latex](x,y)[/latex] в заштрихованной части графика, нужно задать такое условие, чтобы эта точка находилась в круге [latex]x^{2}+y^{2}=1[/latex] и была ниже прямой [latex]y=\frac{x}{2}[/latex].

Отсюда следует, что если [latex]x^{2}+y^{2}\leqslant1[/latex] и [latex]y\leqslant\frac{x}{2}[/latex], то точка принадлежит заштрихованной части круга.

Результат [latex]u[/latex] выводится с точностью до двух знаков после запятой.

Запустить код и проверить тесты можно тут: http://ideone.com/N3UoQ7.

Related Images:

А49

Задача: Дано действительное число  [latex]h[/latex] , Выяснить, имеет ли уравнение  [latex]{ ax }^{ 2 }+bx+c=0[/latex]  действительные корни, если:

[latex]a=\sqrt{\frac{\left|\sin{8h}\right|+17}{{(1-\sin{4h}\cos({h}^{2}+18))}^{2}}}[/latex]  ,

[latex]b=1-\sqrt {\frac {3}{3+\left|\tan{a{h}^{2}}-\sin{ah}\right|}}[/latex],

[latex]c=a{ h }^{ 2 }\sin{bh}+b{ h }^{ 3 }\cos{ah}[/latex]  .

Если действительные корни существуют, то найти их. В противном случае ответом должно служить сообщение, что корней нет.

h Корни Комментарий
-10 (-11.8266, 11.7792) Пройден
-7.5 (-7.02349, 6.99523) Пройден
-2 (-1.36947, 1.36885) Пройден
-1 (-0.400785, 0.3912) Пройден
0 0 Пройден (1 корень)
1 корней нет Пройден
2 корней нет Пройден
7.5 корней нет Пройден
10 корней нет Пройден

 

Задача простая. Алгоритм решения такой-же, как и при решении квадратного уравнения.

 

Проверить программу на ideone

Вывод: В тестах взял стандартный набор значений. Программа работает. Интересно заметить, что при любом положительном значении [latex]h[/latex] корней нет.

Related Images:

Ю2.10

Задача: Посылка. Можно ли коробку размером  [latex]a \times b \times c[/latex]  упаковать в посылку размером  [latex]r \times s \times t[/latex] ? «Углом» укладывать нельзя.

Тесты:

a b c r s t result
1 1 1 3 3 3 Package is fitting to the box
23 2 4 54 45 22 Package is fitting to the box
0 0 0 1 1 0 Package cannot fit !
109 122 222 11 22 33 Package cannot fit !
13 43 21 55 76 89 Package is fitting to the box
23 15 17 44 81 92 Package is fitting to the box

 

Исходный  код программы:

 

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

 

Ссылка http://ideone.com/cRnZc7

Программа состоит из следующих частей:

  1. Объявление переменных a,b,c,r,s,t типа float для хранения входных данных
  2. Ввод пользователем значений переменных a, b, c, r, s, t с помощью scanf
  3. Вывод исходных данных
  4. Сравниваем рёбра пакета с каждым ребром коробки
  5. Завершение программы

 

Программа сверяет размеры коробки ( package ) с размерами посылки ( box ). Если размеры коробки меньше, чем посылки, программа сообщает о возможности упаковки коробки в посылку. В противном случае выводиться сообщение о невозможности упаковки коробки данных размеров в посылку.

Ссылка на ideone.com :  http://ideone.com/XYcV5W

Related Images:

А53

Задача: Даны действительные числа [latex]a,b,c,d,e,f,g,h.[/latex] Известно, что точки [latex](e,f)[/latex] и [latex](g,h)[/latex] различны. Известно также, что точки [latex](a,b)[/latex] и [latex](c,d)[/latex] не лежат на прямой [latex]l[/latex], проходящей через точки [latex](e,f)[/latex] и [latex](g,h)[/latex]. Прямая [latex]l[/latex] разбивает координатную плоскость на две полуплоскости. Выяснить, верно ли, что точки [latex](a,b)[/latex] и [latex](c,d)[/latex] принадлежат одной и той же полуплоскости.

a b c d e f g h Комментарий:
1 1 1 1 1 1 1 1 (a,b) и (c,d) принадлежит
разным полуплоскостям
2 3 7 5 6 3 5 2 (a,b) и (c,d) принадлежат
одной полуплоскости
3 1545 3455 4 42 656,1 3445 1,56 (a,b) и (c,d) принадлежат
разным полуплоскостям

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

По условию задачи нужно выяснить, верно ли, что точки [latex](a,b)[/latex] и [latex](c,d)[/latex] принадлежат одной и той же полуплоскости. Вводим переменные с типом данных «float», так как координаты входят в множество действительных чисел.   Определяем  взаимное расположение точек с помощью  уравнения прямой:  [latex]f=(x-e)(h-f)-(y-f)(g-e)[/latex] .

Если точки лежат в одной полуплоскости, то [latex](a-e)*(h-f)-(b-f)*(g-e)[/latex] и
[latex](c-e)*(h-f)-(d-f)*(g-e)[/latex] – должны быть числами одного знака, если же их знаки противоположны, то точки лежат в разных полуплоскостях.

Для выполнения программы и проверки тестов можно воспользоваться следующим объектом.

 

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

Related Images:

Ю2.21

Задача: Имеются три раствора полезного вещества с концентрациями [latex]p_{1}, p_{2}, p_{3}[/latex] каждый и стоимостью [latex]s_{1}, s_{2}, s_{3}[/latex] соответственно. Можно ли смешать их так, чтобы получить раствор с заданной концентрацией [latex]p[/latex] наименьшей стоимости [latex]s[/latex]?
Указание. Пусть [latex]\alpha_{1}, \alpha_{2}, \alpha_{3}[/latex]- долевые содержания растворов в смеси. Тогда для получения заданной концентрации [latex]p[/latex] необходимо [latex]p_{1}\alpha_{1} + p_{2}\alpha_{2} + p_{3}\alpha_{3}=p[/latex].
Кроме того, нужно учесть условие «комплектности смеси»: [latex]\alpha_{1} + \alpha_{2} + \alpha_{3} = 1[/latex]; [latex]\alpha_{1} \ge 0; \alpha_{2} \ge 0; \alpha_{3} \ge 0;[/latex] При этих условиях необходимо найти наименьшее значение линейной функции: [latex]s = \min _{ \alpha_{1}, \alpha_{2}, \alpha_{3} } { ( s_{1} \alpha_{2} + s_{2} \alpha_{2} + s_{3} \alpha_{3} ) }[/latex].
С учётом ограничений задача сводится к минимизации линейной функции одного переменного на отрезке, однако искомые выражения и условия получаются достаточно громоздкими. Можно показать, что в решении будут участвовать не более двух растворов. Тогда достаточно среди вариантов:
а) [latex]\alpha_{1} = 0[/latex];
б) [latex]\alpha_{2} = 0[/latex];
в) [latex]\alpha_{3} = 0[/latex];
Выбрать оптимальный, и затем провести необходимые расчеты.
Тесты

1 2 3 p s Комментарий
[latex]p_{i}[/latex] 0 0 0 0 10 Пройден
[latex]s_{i}[/latex] 10 12 14
[latex]p_{i}[/latex] 0 10 30 0 10 Пройден
[latex]s_{i}[/latex] 10 20 30
[latex]p_{i}[/latex] 15.3 49.2 51.6 37.4 29.56 Пройден
[latex]s_{i}[/latex] 40 10 20
[latex]p_{i}[/latex] 30 30 30 40 Impossible Пройден
[latex]s_{i}[/latex] 25 14 40
[latex]p_{i}[/latex] 20.3 20.3 20.3 20.3 30 Пройден
[latex]s_{i}[/latex] 30 40 50
[latex]p_{i}[/latex] 30 40 50 20 Impossible Пройден
[latex]s_{i}[/latex] 19 31 22
[latex]p_{i}[/latex] 20 60 80 40 40 Пройден
[latex]s_{i}[/latex] 60 20 100
[latex]p_{i}[/latex] 20 50 90 50 15.71 Пройден
[latex]s_{i}[/latex] 10 80 20
[latex]p_{i}[/latex] 10 60 90 62.5 62.5 Пройден
[latex]s_{i}[/latex] 190 10 20

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

Метод решения:
Задача сводится к решению системы уравнений:
[latex]\begin{cases} p_{1} \alpha_{2} + p_{2} \alpha_{2} + p_{3} \alpha_{3} = p,\\ \alpha_{1} + \alpha_{2} + \alpha_{3} = 1,\\ s = \min _{ \alpha_{1}, \alpha_{2}, \alpha_{3} } { ( s_{1} \alpha_{2} + s_{2} \alpha_{2} + s_{3} \alpha_{3} ) }; \end{cases}[/latex]

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

Аналитическое решение в данном случае тривиально:
[latex]\begin{cases} p_{i} \alpha_{i} + p_{j} \alpha_{j} = p,\\ \alpha_{i} + \alpha_{j} = 1; \end{cases} \Rightarrow \begin{cases} \alpha_{i} = \frac { p-p_{i} } { p_{j}-p_{i} },\\ \alpha_{j} = 1-\alpha_{i}; \end{cases} s = s_{i} \alpha_{i} + s_{j} \alpha_{j};[/latex]

Для большей наглядности применяется функция c_price (calculate price), в теле которой рассмотрены крайние случаи:
1) Если [latex]p_{1}=p_{2}=p[/latex], то нужно выбрать раствор наименьшей стоимости.
2) Если [latex]p_{1}=p_{2} \ne p[/latex], то решений нет.
3) Если [latex]p_{1}=p \ne p_{2}[/latex], то [latex]s = s_{1}[/latex]. Аналогично в случае [latex]p_{2}=p \ne p_{1}[/latex].
4) Если доля раствора в смеси [latex]\alpha 1[/latex], то решений нет.

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

Протестировать работу программы можно по ссылке.
Реализация на Java: http://ideone.com/qTQpMX

Related Images:

Ю2.26

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

[latex]x_{1}[/latex] [latex]y_{1}[/latex] [latex]x_{2}[/latex] [latex]y_{2}[/latex] [latex]x_{3}[/latex] [latex]y_{3}[/latex] Результаты Комментарий
6 8 3 5 6 3 Пара ферзей 1 и 2 угрожают друг другу

Пара ферзей 1 и 3 угрожают друг другу

Пройден
1 5 6 8 7 3 Никто никому не угрожает Пройден
3 3 8 8 7 1 Пара ферзей 1 и 2 угрожают друг другу Пройден
2 8 4 7 7 4 Пара ферзей 2 и 3 угрожают друг другу Пройден

 Тесты:

Код на С

Код на Java

 

Решение:

В случае если фигуры стоят на одной вертикали или горизонтали соответствующие координаты будут равны. Таким образом, проверяя на равенство координаты, узнаем о существовании угрозы. В случае если фигуры стоят на одной диагонали можно заметить, что [latex] \left|x_{1}-x_{2 }\right|=\left|y_{1}-y_{2} \right|[/latex]. Таким образом, проверив и это условие, точно определим есть угроза или нет.

Также надо отметить тот случай, когда не существует никакой угрозы . Для этого введем счетчик [latex]k[/latex]. Если между какой-либо парой фигур есть угроза, то [latex]k[/latex] увеличивается на единицу. Если после проверки вышеупомянутых условий [latex]k[/latex] остается равным нулю, то делаем вывод, что никто никому не угрожает.

 

 

Related Images:

А 42

Задача

Даны действительные числа [latex]x,y[/latex]  [latex](x\neq y)[/latex]. Меньшее из этих двух чисел заменить их полусуммой, а большее — их удвоенным произведением.

Тесты

Было дано Стало после проверки Комментарий
x y x y
38.76 -24.33 -1886.0615999  7.215 Пройден
11.346 23.228 17.287 527.0898 Пройден
-2444.2 1231.444 -606.378 -6019790.8496 Пройден
767.2 -1455.24 -2232920.256 -344.02 Пройден
0 213.4 106.7 0 Пройден
1111 0 0 555.5 Пройден
123.4 123.4 Ничего не выйдет, х=у Не пройден
0 0 Ничего не выйдет, х=у Не пройден

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

 

Для получения ответа переменной необходимо преодолеть критерий [latex](x\neq y)[/latex].

Если же [latex](x\neq y)[/latex], то программа сравнивает сами переменные. Тут может быть два случая:

  • Если  [latex]x>y[/latex], то начальные значения переменных мы должны изменить на [latex]x=\frac{x+y}{2}[/latex], a [latex]y=2*x*y[/latex].
  • Если [latex]y>x[/latex], то начальные значения переменных мы должны изменить на [latex]y=\frac{x+y}{2}[/latex], a [latex]x=2*x*y[/latex].

Программа вначале высчитывает конечные х и у по формулам и при выполнении условий просто присваивает переменным значения. Тем самым мы упрощаем программу (т.к. расчет значений идет только один раз вместо двух).

Второй вариант решения.

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

Для начала описываем функцию swap, которая меняет значения х и у местами. Далее, в самой программе, проверяем не равны ли х и у и, если не равны, то какое из них больше. Узнав большее, используем функцию swap.

Код на Java

Related Images:

Ю 2.31

Задача

График движения путников к задаче Ю 2.31


График движения путников к задаче Ю2.31

Встреча. Из пункта А в пункт В выехал велосипедист со скоростью [latex]v_{0} [/latex] км/час. Одновременно навстречу ему из пункта В двинулся «автостопом» другой путник.[latex]s_{1} [/latex] м он двигался со скоростью [latex]v_{1} [/latex] м/час, [latex]s_{2} [/latex] м — со скоростью [latex]v_{0} [/latex] км/час, [latex]s_{3} [/latex] м — со скоростью [latex]v_{3} [/latex] км/час. Через сколько часов после старта и в какой точке путники встретились?

 Тесты

v0, км/час v1, м/час v3, км/час s1, м s2, м s3, м place, км time, час Комментарии
40 15000 10 20000 40000 40000 66.667 1.667 Пройден (встреча на первом промежутке)
10 5000 60 10000 60000 30000 55.0 5.5 Пройден (встреча на первом промежутке)
8 5000 30 10000 10000 80000 37.368 4.671 Пройден (встреча на первом промежутке)
-300 30000 23333 22222 5454 555.1 Неправильно введены данные Не пройден
10 2222 3333 0 -4444 11.6 Неправильно введены данные Не пройден

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

Можно предположить, что весь путь в задаче представлен суммой [latex]ss=s_{1}+s_{2}+s_{3}[/latex]. Для начала переведем все величины  в единицы СИ:

Из метров в километры:

[latex]s_{1}=s_{1}*0.001 \Leftrightarrow s_{1}=\frac{s_{1}}{1000}[/latex],

[latex]s_{2}=s_{2}*0.001 \Leftrightarrow s_{2}=\frac{s_{2}}{1000}[/latex],

[latex]s_{3}=s_{3}*0.001 \Leftrightarrow s_{3}=\frac{s_{3}}{1000}[/latex].

Из метров/час в километры/час: [latex]v_{1}=v_{1}*0.001 \Leftrightarrow v_{1}=\frac{v_{1}}{1000}[/latex]

Найдем место встречи. Тут может быть три случая:

  1. Встреча двух путников на первом промежутке пути. Тогда время встречи можно вычислить по формуле: [latex]time = \frac{ss}{( v_{0} + v_{1} )}[/latex] , а место встречи —  [latex]place = time * v_{0}[/latex]
  2. Встреча двух путников на втором промежутке пути: Тогда время встречи можно вычислить по формуле: [latex]time =\frac{ss — s_{1} — ( v_{0} * t_{1} ) }{ v_{0} + v_{0} }[/latex] , а место встречи — [latex]place = ( t_{1} + time ) * v_{0}[/latex].
  3. Встреча двух путников на третьем промежутке пути: Тогда время встречи можно вычислить по формуле: [latex]time = \frac{ ss — s_{1} — s_{2} — ( v_{0} * t_{2} )}{ v_{0}+ v_{3} }[/latex], а место встречи — [latex] place = ( t_{1}+t_{2} + time ) * v_{0}[/latex].

Если путники встречаются на первом промежутке пути, то их скорости суммируются (т.к. тела движутся на встречу друг к другу), при делении всего пути на сумму этих скоростей получим время встречи, расстояние можно найти умножив время встречи на скорость первого путника.

Если путники встречаются на втором промежутке пути, то их скорости аналогично суммируются, но в формуле нахождения времени встречи учитывается путь, пройденный путниками за первый промежуток времени, эту разность делим на сумму скоростей и получаем время встречи. Для того чтобы найти место встречи сложим время путников в пути и время встречи поделим на скорость и найдем место встречи.

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

Код на Java

 

Related Images:

А60а

Задача. Пусть [latex]D[/latex] — заштрихованная часть плоскости и пусть [latex]u[/latex] определяется по [latex]x[/latex] и [latex]y[/latex] следующим образом: [latex]u=\begin{cases}0, ; \text{ if } (x,y)\in D \\x ; \text{ another case }\end{cases}[/latex] (запись [latex](x,y)\in D[/latex] означает, что точка с координатами [latex]x[/latex] , [latex]y[/latex] принадлежит [latex]D[/latex]).

Даны действительные числа [latex]x[/latex] , [latex]y[/latex]. Определить [latex]u[/latex].

Снимок

x y Комментарии
3 -2 3
1.53 0.44 0
0 2 0
1 0 0
Для решения задачи воспользуемся тем, что [latex]x^{2}+y^{2}=R^{2}[/latex]. Данная точка лежит на координатной плоскости так, что [latex]x^{2}+y^{2}\geq 1^{2}[/latex] и [latex]x^{2}+y^{2}\leq 2^{2}[/latex]. При этом [latex]y\geq 0[/latex].

Related Images:

Ю2.16

Задача. Среди заданных целых чисел [latex]k[/latex] , [latex]l[/latex] , [latex]m[/latex] найти пары кратных.

 

k l m    Комментарий
0 0 0 Нет пар
0 0 1 Нет подходящих пар
2 4 6 Две пары
3 3 3 Нет пар
3 3 6 Две пары
-2 -4 -8 Нет пар
-2 4 8 Одна пара
Учитываем, что кратные числа — натуральные, и число не может быть кратным само себе.
Для выполнения задания необходимо воспользоваться операцией  «остаток от деления». Если в результате получается 0, то два числа кратные.

Related Images:

Ю2.17

Задача.

Как известно число делится на 3, тогда и только тогда, когда сумма его цифр делится на 3. Проверить этот признак на примере заданного трехзначного числа.

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

Тесты.

Ввод Вывод Комментарий
321 not refuted В обоих случаях кратно 3.
742 not refuted В обоих случаях не кратно 3.

Код.

C++

Java

 Алгоритм.

  1. Проверяем кратно ли данное число 3-ем.
  2. Находим сумму цифр числа.
  3. Проверяем кратна ли сумма цифр 3-ем.
  4. Сравниваем результаты.

Для выполнения программы и проверки тестов можно воспользоваться следующей ссылкой(C++) или другой(Java).

Related Images:

А34а

Задача.

Даны действительные числа  [latex] x, y, z [/latex]. Получить  [latex]\max\left\{x,y,z \right\}[/latex].

Тесты.

Ввод Вывод
0  0  0 0
-1  2  3 3
1  3.4  2.2 3.4
-3.5  0  2.1 2.1
-1.9  -7  0 0
-3.4  -2  -1.8 -1.8

Код.

Ideone (C++)

Ideone (Java)

 

Решение.

1) Как известно, для любых чисел  [latex] x,y \in \mathbb{R} [/latex]    [latex] \max\left\{x,y \right\} = x,[/latex]  если  [latex] x \geq y[/latex], и  [latex] \max\left\{x,y \right\} = y,[/latex]  в противном случае.

2) Нетрудно доказать, что  [latex] \forall x,y,z \in \mathbb{R} [/latex]    [latex] \max\left\{x,y,z \right\}=\max\left\{\max\left\{x,y \right\},z \right\}[/latex]

3) С учётом замечания  1), вычислим  [latex] \max\left\{x,y\right\}[/latex]  и поместим полученное значение в переменную  [latex] \max [/latex]

4) С учётом замечаний  1)  и  2), если  [latex] max \geq z [/latex], то  [latex] \max\left\{x,y,z \right\} = z[/latex]. В противном случае, [latex] \max\left\{x,y,z \right\} = \max[/latex].

Related Images: