MLoop 18

Вычислите с точностью [latex]\varepsilon[/latex] cумму ряда [latex]\sum\limits_{i=1}^{\infty}{\frac{2^i}{i!}}[/latex]

Тесты

Точность Сумма
0.00001 6.38905

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

Сначала находим отношение двух соседних членов ряда. Это [latex]2/(i+1)[/latex]. Дальше в цикле for прибавляем значение очередного элемента к переменной [latex]sum[/latex] до тех пор, пока очередной элемент не станет меньше заданной точности. Значение [latex]sum[/latex] равно двум, так как при [latex]i=1[/latex] значение суммы равно 2.

Ссылка на среду

Список задач на циклы.

e-olymp 2803 МаркЕрованные кубики

Задача

У Витека есть набор кубиков, на котором изображены английские буквы, причём как маленькие, так и большие. Недавно мама подарила ему ещё и набор кубиков с цифрами, в результате чего Витек научился быстро считать в пределах 10-ти. А вот папа имел неосторожность подарить ему набор разноцветных маркеров, после чего Витек начал экспериментировать с кубиками с цифрами: он зарисовывал очередную цифру и на её месте рисовал цифру на единицу большую. Так как он прекрасно понимал, что цифры 10 не существует, он вместо числа 10 всегда писал цифру 0.

Учтите, что иногда мама звала Витека покушать и он не успевал завершить начатую работу и написать новую цифру – в этом случае кубик навсегда оставался пустым, такие кубики обозначены символом пробела.

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

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

Единственная строка, состоящая из описанных выше символов. Длина строки не превышает 255 символов.

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

Единственная строка – результат работы Вашей программы.

Тесты

Входные данные Выходные данные
abc1234567890ABC abc2345678901ABC
00000000 11111111
546476756 657587867

 

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

Проверяем, является ли элемент строки числом. Если это 9, заменяем ее на 1, иначе увеличиваем значение символа на 1.

 

Ссылка на задачу на е-олимпе

Ссылка на засчитанное решение

Ссылка на среду с кодом

Решение через c-like string

Принцип работы тот же, что и со string решением, но в цикле перед проверкой, является ли символ числом также от символа отнимается код нуля, чтобы дальше с этим символом можно было работать как с целым числом. В конце цикла с заменой цифр нужно снова прибавить символ нуля, чтобы массив правильно выводился.

Cсылка на засчитанное решение с помощью c-like string

Ссылка на код в среде ideone

Ю2.18

Задача.

Заданы координаты вершин тругольника [latex] ABC [/latex] на плоскости. Вывести их в порядке обхода по часовой стрелке (для проверки достаточно рассмотреть знаки внутренних углов).

Задача взята из задачника по программированию Юркина.

Тесты

Координаты вершин

[latex] x, y [/latex]   [latex] a, b [/latex]   [latex] c, d [/latex]

Вывод по часовой стрелке

[latex] x, y [/latex]   [latex] a, b [/latex]   [latex] c, d [/latex]

 -2 -2     4 1     -1 4   ( 4 1)     (-2 -2 )    ( -1 4)
-2 -2     -1 4      4 1   ( 4 1)     (-2 -2 )    ( -1 4)
 4 1      -2 -2   -1 4   ( 4 1)     (-2 -2 )    ( -1 4)
 4 1     -1 4     -2 -2   ( 4 1)     (-2 -2 )    ( -1 4)
-1 4     -2 -2     4 1   ( 4 1)     (-2 -2 )    ( -1 4)
-1 4      4 1      -2 -2   ( 4 1)     (-2 -2 )    ( -1 4)

Код

Решение

В задаче не указано, с какой вершины следует выводить координаты, так что за точку отсчета берется крайняя правая. Для этого находим большее из  [latex] x, c, d [/latex]. Из оставшихся двух точек находим нижнюю, находя меньшее значение по оси ординат. Поскольку значения по оси ординат могут совпадать, проверяем также значение по оси абсцисс и выбираем меньшее из двух.

Так как точек три и у каждой есть два варианта расположения относительно двух других, в программе используется 6 if-ов.

Решение на ideone.

Mif 17.14

Задача.

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

Задача взята здесь.

Трапеция

Тесты

[latex]x[/latex] [latex] y[/latex] Ответ
-2 4 Принадлежит
4 8
Не принадлежит
-7 9
Не принадлежит
0 0
Не принадлежит
0 1
Принадлежит
4 1
Принадлежит
-7 1  Принадлежит

Код

Решение

Каждая из сторон тарпеции делит плоскость на 2 части. Сторона имеет вид [latex]y = k*x + b[/latex]. Путем подстановки были найдены коефициенты [latex] k [/latex] и [latex] b [/latex].  Точка может лежать либо ниже, либо выше, либо на стороне. Если [latex]y — k*x <= b[/latex], точка лежит на или ниже стороны. Основы трапеции представлены в виде [latex] y =1 [/latex] и [latex] y = 7 [/latex].

Ссылка на ideone.com

e-olymp 2. Цифры

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

Условие

Вычислить количество цифр целого неотрицательного числа [latex]n[/latex].

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

Одно не отрицательное целое число [latex]n[/latex] [latex](0<=n<=2*10^9)[/latex].

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

Количество цифр в числе [latex]n[/latex].

 

Тесты

Число Количество цифр
1 1
20 2
123 3

Код

Решение

Сначала объявляем переменную [latex] n [/latex] для подсчета цифр в числе и присваиваем ей значение 1. Далее используем цикл while, проверкой которого ставим деление числа на 10 — так как тип числа int, это «отбрасывает» последнюю цифру в числе. Пока результат проверки истинный, инкриментируем n на 1.

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

Засчитанное решение

Альтернативное решение с помощью десятичного логарифма

Сначала проверяется, не является ли введенное число нулем, так как невозможно посчитать любой логарифм от нуля. Если число отлично от нуля, находим десятичный логарифм от числа, прибавляем к нему единицу (что соответствует количеству цифр в числе). Берем целую часть от найденного, в случае, если число не кратно 10.

 

Код решения

ML 22

Задача взята тут.

Найти площадь равнобочной трапеции с основаниями  [latex]a[/latex] и [latex]b[/latex]  и углом [latex]\alpha[/latex]  при большем основании [latex]a[/latex].

Тесты

[latex]a[/latex] [latex]b[/latex] [latex]alpha[/latex] Square
15 10 0,785398 31.25
20 5 1.0472 162.38
30 20 0.523599 72.1687

Решение

Для нахождения площади трапеции используется формула: [latex]h*m[/latex] , где [latex]m[/latex] средняя линия, [latex]h[/latex] высота. [latex]h[/latex] находится как [latex]\tan[/latex] [latex]\alpha[/latex] [latex]\cdot[/latex] [latex](a-b)/2[/latex] ,  [latex]m[/latex] находится как [latex](a-b)/2[/latex].

Код

Решение на ideone