MLoop 13

 

Условие

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

Вычислите с точностью [latex]\varepsilon[/latex]   значение функции   [latex]f(x)=\arcsin x[/latex].
При вычислениях допустимо использовать только арифметические операции.

Тесты

[latex] x [/latex] [latex] arcsin x [/latex]
1 -1  -1.56709
2 -0.5  -0.523599
3 0 0
4 0.5  0.523599
5 0.7071067  0.785398
6 0.8660254  1.0472

Решение

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

Ряд Тейлора для функции [latex]\arcsin x[/latex]:

[latex]\arcsin x = \sum_{n=0}^{\infty} \frac{(2n)!}{4^n (n!)^2 (2n+1)} x^{2n+1}[/latex] или:
[latex]\arcsin x = x + \frac{x^3}{6} + \frac{3x^5}{40} + \cdots[/latex]

Вводим переменную, которая будет считать арксинус — [latex]arcsin[/latex].

Так как первый член — [latex]x[/latex], то начальное значение [latex]\arcsin =x[/latex]   и   [latex]a=x[/latex].  [latex]a[/latex] — это слагаемые суммы, оно будет изменятся с каждым последующим значением [latex]n[/latex].

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

[latex]\frac{(2(n+1))!\cdot x^{2(n+1)+1}}{4^{n+1}((n+1)!)^2 (2(n+1)+1)} \cdot \frac{4^n (n!)^2 (2n+1)}{(2n)!\cdot x^{2n+1}} = \frac{(2n+1)^2 x^2}{2(2n+3)(n+1)}[/latex]

Видно, что эта функция сначала возрастает, а потом убывает ( [latex]x\leq 1[/latex] )
[latex]\frac{(2n+1)^2 x^2}{2(2n+3)(n+1)}[/latex],  поэтому [latex]a[/latex] будет уменьшаться. Мы задаем точность [latex]\varepsilon[/latex] и пока [latex]a > \varepsilon[/latex] мы вычисляем  сумму
[latex]\arcsin +=a[/latex].

Код

Код на ideone

Mif 8

Задача

Условие взято отсюда

Четырёхугольник [latex]ABCD[/latex] задан на плоскости целочисленными координатами вершин. Определите тип четырёхугольника: квадрат, ромб, прямоугольник, параллелограмм, трапеция, произвольный четырёхугольник. Из характеристик указать наиболее частную.

Тесты

[latex]a_1[/latex]   [latex]a_2[/latex] [latex]b_1[/latex] [latex]b_2[/latex] [latex]c_1[/latex][latex]c_2[/latex] [latex]d_1[/latex] [latex]d_2[/latex]                                                   Ответ
0 0 1 0 1 1 0 1   квадрат
0 -3 2 0 0 3 -2 0 ромб
0 0 4 0 4 1 1 4 прямоугольник
0 0 10 0 12 4 2 4 пaраллелограмм
0 0  2 0  1 1  0 1 трапеция
0 0  0 2  1 1  1 0 трапеция
-4 -5 -15 7 5 8 6 -7 произвольный
 0 0 1 0 10 20  -5 7 произвольный

 

Код

 

Решение

Для начала стоит найти длины всех сторон:

[latex]AB^{2}=((a1-b1)^{2}+(a2-b2)^{2})[/latex]. (аналогично для остальных сторон)

Затем можно найти длины диагоналей четырёхугольника

[latex]AC^{2}=((a1-c1)^{2}+(a2-c2)^{2})[/latex]. (аналогично для [latex]BD[/latex]).

Через условие задаем равность противоположных сторон [latex]AB=CD[/latex] и  [latex]BC=DA[/latex]:

  1. У ромба смежные стороны равны, но если у ромба диагонали равны, то это квадрат;
  2. Если четырёхугольник не является квадратом, но диагонали равны, то это прямоугольник;
  3. В противном случае — параллелограмм.

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

Код на ideone

Mif 17.4

Условие задачи (17.4)

Условие

Принадлежит ли точка [latex](x;y)[/latex] фигуре на рисунке? Пожалуйста повторите в своём отчёте рисунок, выполнив его в формате SVG.

123

Тесты

x y Ответ
4 3 yes
1 4 yes
2 2 no
6 2 no
-1 0 no

Решение

Точки, которые принадлежат ромбу, находятся между линиями, которые создают этот ромб.

Можно заметить, что эти сумма координат этих точек находится в сегменте между [latex]5[/latex] и [latex]11[/latex]:

  •  [latex]5\leq x+y\leq 11[/latex];

Их разность в сегменте  от  [latex]-3[/latex]  до [latex]3[/latex]:

  •   [latex]-3\leq x-y\leq 3[/latex];

Если сумма или разность данных координат больше или меньше заданых чисел, то точка не принадлежит ромбу.

 

Код

Код на IDEONE

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

Код

Решение

Возьмем количество пирожков за счетчик. Используя for найдем количество пирожков для детей, вес которых не превышает 30кг.

По количеству пирожков мы можем найти количество упаковок молока. При этом мы можем получить не целое число. Чтобы избежать этого, подключаем библиотеку <cmath>  и  используем округление вверх ceil .

Посмотреть код на ideone  можна здесь.

Проверить правильность на e-olimp можна здесь.

ML8

Задача. Определить периметр правильного [latex]n[/latex]-угольника, описанного около окружности радиуса [latex]r[/latex].

Тесты

[latex]n[/latex] [latex]r[/latex] [latex]P[/latex]
4 2 16
3 5 51.9615
7 3 20.2261
5 5 36.3271
6 6 41.5692

Решение

Величину угла можно найти если задано только количество вершин — [latex]\frac{\pi\cdot(n-2))}{n}[/latex].

Для примера можно рассмотреть квадрат.
Без імені
Так как квадрат — правильный четырёхугольник, то центр вписанной окружности совпадает с центром описанной окружности.  [latex]R[/latex]  делит угол напополам — [latex]\frac{\alpha }{2}[/latex].  Отсюда получаем треугольник:

Без імені

[latex]\frac{\alpha }{2}[/latex] — половина угла квадрата, [latex]\frac{a}{2}[/latex] — половина стороны. Так как [latex]r[/latex] проходит перпендикулярно к стороне [latex]a[/latex], то мы можем воспользоваться формулой тангенса — [latex]tg\frac{\alpha }{2}=\frac{r}{0.5a}=\frac{2r}{a}[/latex] .

[latex]a=\frac{2r}{tg\frac{\alpha }{2}}[/latex].

Выводим формулу только с  [latex]n[/latex] и [latex]r[/latex].

[latex]P=\frac{2nr}{tg(\frac{\pi(n-2)}{2n})}[/latex].

Код

Код можно увидеть здесь

 

e-olymp 902. Уровень учебных достижений

Задача взята с сайта e-olimp

Задача. Установить уровень учебных достижений ученика (начальный, средний, достаточный, высокий) соответственно к заданной оценки (от 1 до 12).

Тесты

В тестах нужно отобразить следующее:

  • Оценки от 1 до 3 —  начальный уровень;
  • от 4 до 6 — средний;
  • от 7 до 9 — достаточный;
  • от 10 до 12 — высокий.
Оценка \ Уровень Intial

(начальний)

Average

(средний)

Sufficient

(достаточний)

High

(высокий)

1, 2, 3 +
4, 5, 6 +
7, 8, 9 +
10, 11, 12 +

Решение

Оценки могут быть строго от 1 до 12 (по условию). Примем оценку за число [latex]a[/latex]. Оценка это число больше или равно 1 и меньше либо равно 12. Мы разбиваем сегмент [1, 12] на 4 сегмента — [1, 3], [4, 6], [7, 9], и [10, 12].  В каждом сегменте будет свое условие — [latex]a\leq3[/latex], [latex]a\leq6[/latex], [latex]a\leq9[/latex], и [latex]a\leq12[/latex].  Мы берем условие [latex]a\leq3[/latex], и, если это правда — пишем Intial.  Если ложь проверяем  [latex]a\leq6[/latex], если это правда — результат Average. Если ложь, то мы проверяем [latex]a\leq9[/latex]. В случае правды — результат Sufficient. Но если это все, начиная от [latex]a\leq3[/latex] заканчивая [latex]a\leq9[/latex] ложь, тогда  в решении будет слово High.

Код 

Код на IDEONE можно увидеть здесь.

Проверить правильность задачи можно здесь.