Mif17.11

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

Тесты:

Ввод [latex](x,y)[/latex] Вывод
1 3 1 YES
2 -3 1 NO
3 -3 -1 NO
4 3 -1 YES
5 4 7 NO
6 4 -7 NO

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

Решение:

Изучив рисунок, находим координаты трех точек сегмента круга. После, находим координаты центра круга и его радиус с помощью данного сайта. Если проекция точки на ось [latex]OX[/latex] не находиться в области допустимых значений [latex]x[/latex], то точка не принадлежит сегменту круга в любом случае. Если же первое условие выполняется, то точка принадлежит сегменту круга тогда, когда квадрат расстояния ([latex]l[/latex]) от центра круга до точки меньше либо равно квадрату радиуса ([latex]r[/latex]) круга ([latex]r*r[/latex] >= [latex]l[/latex])

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

Ссылка на решение задачи на компиляторе 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:

Mif 1

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

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

Код

Код (с тернарной операцией)

Тесты

Входные данные Выходные данные
[latex]x[/latex] [latex]y[/latex] [latex]\min (x, y)[/latex]
4 9 min=4
23 32 min=23
48 125 min=48
842 361 min=361
15 15 min=15

Решение

Вводим данные [latex] x [/latex], [latex] y [/latex]. Затем сравниваем их. Если [latex] x\leq y [/latex], то выводится [latex] x [/latex]. Иначе, то есть,если [latex] y < x [/latex], то выводится [latex] y [/latex].

Ссылки

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

Код программы на Ideone.com;

Related Images:

Mif 17.19

Задача. Принадлежит ли точка (х;у) фигуре на рисунке?

file
Тесты:

[latex]x[/latex] [latex]y[/latex] Вывод
-3 0 no
-1.5 2 yes
2 5 yes
3 4 yes
3 3 no

 

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

 

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

В данной программе проверяются допустимые значения [latex]x[/latex] и [latex]y[/latex], при которых точка с данными координатами может принадлежать данной фигуре. Если координаты соблюдают все условия, то программа выводит «yes», т.е. принадлежит . В остальных случаях на экран выводится «no».

Related Images:

Ю2.28

Задача.

Вклад. Банк предлагает 3 вида срочных вкладов: на 3 месяца под [latex]p_{1}[/latex]%, на 6 месяцев под [latex]p_{2}[/latex]% и на год под [latex]p_{3}[/latex]%. Какой из вкладов наиболее выгоден для вкладчика?

Тесты:

[latex]p1[/latex] [latex]p2[/latex] [latex]p3[/latex] Вывод программы
0 0 0 Нет наиболее выгодного вклада из трех
10 10 10 Первый вклад выгоднее
10 10 50 Третий вклад выгоднее
50 10 10 Первый вклад выгоднее
5 20 20 Второй вклад выгоднее

 

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

 

 

 

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

Для решения этой задачи я пользовался следующей формулой: [latex]B = A(1 + \frac{P}{100\%})[/latex], где [latex]B[/latex] — будущая стоимость, [latex]A[/latex] — текущая стоимость, [latex]P[/latex] — процентная ставка за расчетный период, [latex]n[/latex] — количество расчетных периодов. В программе я ее представил в другом виде, так как для сравнения выгодности вкладов одинаковой суммы, саму сумму можно не учитывать.

Код на ideone.com

Related Images:

Mif 6

Условие

Даны действительные числа [latex]x[/latex], [latex]y[/latex], [latex]z[/latex]. Могут ли они быть длинами сторон некоторого треугольника?

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

В одной строке задано три числа [latex]x[/latex], [latex]y[/latex] и [latex]z[/latex].

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

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

Тесты

Входные данные Выходные данные
1e1000 1e10000 1e-1000 NO
1e100 1e100 1e-100 YES
15.4 6.9 18.3 YES
17.55 37.67 88.98 NO
1000000 200000 30000 NO
1000000 1200000 900000 YES
3 4 5 YES
9 4 3 NO
99 10 47 NO

Код

Решение

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

Related Images:

e-olymp 36. Змей Горыныч

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

Условие:

В некотором царстве жил Змей Горыныч. У него было [latex]N[/latex] голов и [latex]M[/latex] хвостов. Иван-царевич решил уничтожить губителя человеческих душ, для чего ему его кума Баба Яга подарила волшебный меч, так как только им можно убить Змея Горыныча. Если отрубить одну голову, то на её месте вырастает новая, если отрубить хвост, то вместо него вырастет 2 хвоста. Если отрубить два хвоста, то вырастает 1 голова, и только когда отрубить 2 головы, то не вырастет ничего. Змей Горыныч гибнет только в том случае, когда ему отрубить все головы и все хвосты. Определить минимальное количество ударов мечом, нужное для уничтожения Змея Горыныча.

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

Два числа [latex]N[/latex], [latex]M[/latex] ([latex]0[/latex] [latex]<=[/latex][latex]N[/latex], [latex]M[/latex][latex]<=[/latex][latex]1000[/latex]).

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

Единственное число – минимальное количество ударов мечом, или -1, если уничтожить Змея Горыныча невозможно.

Тесты:

N M Количество ударов
3 3 9
3 0 -1
0 9 12
0 0 0
3 2 3
19 114 95

Решение

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

При решении данной задачи было рассмотрено несколько случаев.

  • Змея Горыныча убить невозможно. Это возможно только в том случае, когда у него нечетное количество голов, и нет ни одного хвоста, так как при наличии хотя бы одного хвоста становится возможным увеличение количества хвостов и голов до необходимого, путем отрубания одного, или двух хвостов соответственно. Чтобы определить возможность уничтожения Змея, делаем проверку: если количество голов нечетное и хвостов нет, то выводим «-1». Если эти условия не выполняются, то переходим ко второму пункту решения.
  • Змей Горыныч может быть убит. Это означает, что у Змея есть хотя бы один хвост, или четное количество голов. В таком случае, мы работаем внутри цикла, при каждом проходе которого проверяется, выполняются ли описанные выше условия:
    Горыныча можно убить тогда и только тогда, когда при отрубании всех хвостов получается четное количество голов. Отсюда, необходимо, чтобы у Змея было четное количество хвостов, и сумма голов и количества хвостов, деленного на два, была четным числом. Поэтому будем работать по простому алгоритму:
  1. Если количество хвостов [latex]M[/latex] нечетное, то отрубаем один хвост, на месте которого вырастает два новых, и увеличиваем счетчик ударов [latex]count[/latex] на один.
  2. Если количество голов нечетное, и хвостов больше одного, то отрубаем два хвоста, тем самым увеличивая количество голов на 1, и увеличиваем счетчик.
  3. Если количество голов и хвостов четное, и если количество хвостов при делении на два дает четное число, то мы увеличиваем счетчик на  [latex]M/2+((N+M/2)/2)[/latex], и приравниваем количество голов и хвостов нулю.
  4. Если какое-то из условий пункта 3 не выполняется, то увеличиваем количество хвостов на 1, и увеличиваем счетчик ударов.
  5. Повторяем алгоритм до тех пор, пока не убьем Горыныча.

После выхода из цикла в счетчике [latex]count[/latex] находится минимальное число ударов, необходимое для уничтожения Змея Горыныча. Выводим его на экран, и переходим на новую строку с помощью команды [latex]endl[/latex].

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

Для перехода к странице на e-olimp с полностью выполненным данным заданием щелкните здесь.

Related Images:

Mif 12

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

Банк предлагает три вида депозитов на 3 месяца (p_3% годовых), на 6 месяцев (p_6% годовых) и на 12 месяцев (p_{12}% годовых). Какой депозит принесёт больше дохода при многолетнем вложении.

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

Для решения данной задачи нужно использовать формулу вычисления сложных процентов: [latex]{(1+\frac{p}{100\%})}^n[/latex], где [latex]p-[/latex]процентная ставка за расчетный период, а [latex]n-[/latex]количество расчетных периодов. Для депозита на [latex]3[/latex] месяца получаем формулу [latex]{(1+\frac{p_3}{4\times100\%})}^4[/latex], для депозита на [latex]6[/latex] месяцев получаем формулу [latex]{(1+\frac{p_6}{2\times100\%})}^2[/latex], для депозита на [latex]12[/latex] месяцев получаем формулу [latex](1+\frac{p_{12}}{100\%})[/latex]. Программа будет сравнивать полученные результаты и выводить максимальный.

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

Тесты:

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  1  1.01004   3 месяца  10  1.10381
 6 месяцев  10  1.1025  6 месяцев  20  1.21
 12 месяцев  30  1.3  На 12 месяцев  12 месяцев  30  1.3  На 12 месяцев

 

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  4  1.0406  На 3 месяца   3 месяца  1  1.01004
 6 месяцев  4  1.0404  6 месяцев  38  1.4161  На 6 месяцев
 12 месяцев  4  1.04  12 месяцев  9  1.09

 

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  1  1.01004   3 месяца  11  1.11462
 6 месяцев  20  1.21  6 месяцев  5  1.05062
 12 месяцев  25  1.25  На 12 месяцев  12 месяцев 17  1.17  На 12 месяцев

Рассмотрим работу данной программы на реальных предложениях этого банка для депозитов «Плюс срочный» и «Стандарт срочный».

 Плюс срочный Входные данные Выходные данные  Стандарт срочный Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  23.5  1.25653   3 месяца  22.5  1.24471
 6 месяцев  24.5  1.26001  На 6 месяцев  6 месяцев  23.5  1.24881  На 6 месяцев
 12 месяцев  25.5  1.255  12 месяцев 24.5   1.245

В результате получили, что эти оба депозита выгодны при сроке вклада на [latex]6[/latex] месяцев. По тестам видно, что депозит «Плюс срочный» при вкладе на  [latex]6[/latex] месяцев приносит большую прибыль, чем депозит «Стандарт срочный». Посчитаем, на сколько первый депозит выгоднее второго, для этого воспользуемся формулой: разница[latex]=[/latex](первый депозит[latex]-[/latex]второй депозит)[latex]\div[/latex]второй депозит[latex]\times{100\%}[/latex]. Подставив значения, получим  — на [latex]\approx0.89685\%[/latex].


Здесь
можно посмотреть решение задачи на ideone.com

Related Images:

Mif 16

Условие :

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

Решение :

Команда ветвления (конструкция «if {} else {}» или тернарный оператор «?» ) разделяет код программы с какого-то момента ровно на 2 независимых алгоритма (даже при отсутствии блока «else {}», так как программа продолжает выполняться в зависимости от того, сработал блок «if {}», или нет). Таким образом, если понимать под «вариантов поведения» изолированный блок кода, выполняемый при совпадении набора условий, чтобы разбить программу на [latex]n[/latex] таких независимых вариантов, нужно использовать ровно [latex]n — 1[/latex] условную операцию.

Тесты : 

Входные данные 12 7 1 0
Выходные данные 11 6 0 Ошибка ввода

Код :

Ссылка на рабочий код:

Ideone.com

Related Images:

Mif 5

Задача. Даны действительные числа [latex] x, y, z.[/latex]  Вывести наименьшее и наибольшее из них. Если наименьших или наибольших чисел окажется несколько, то укажите в скобках количество.

Тесты

[latex] x [/latex] [latex] y [/latex] [latex]z[/latex] Наименьшее число Наибольшее число
100.56  812.34 -12 -12 812.34
-722.5  812.34 -722.5 -722.5 (2)   812.34
 256 145695 145695 256 145695 (2)
0  0 0 0 (3) 0(3)
-518.3 -759.3  -1995.6 -1995.6 -518.3

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

 

Здесь находится код в ideone.com

Решение

  1. Так как по условию нам даны действительные числа, то, чтобы охватить наибольший диапазон чисел, используем тип данных long double;
  2. Для того, чтобы решить данную задачу мы предполагаем, что одна из переменных является наименьшей[latex] (x=min)[/latex] , а потом сравниваем ее с остальными переменными.
  3. Возможно, наше предположение верно. Тогда присваиваем счетчику значение [latex] 1 [/latex]. Если какая-либо из оставшихся переменных равна минимуму, то увеличиваем значение счетчика на единицу.
  4. Если значение переменной [latex] y[/latex] или  [latex] z[/latex] меньше минимума, то наше предположение было не верно. Тогда присваиваем значение минимального числа соответствующей переменной, а счетчику — значение [latex] 1 [/latex] . Если  несколько переменных имеют наименьшее значение, то при каждом совпадении значения счетчик увеличивается на единицу.
  5. Аналогичный подход применяем к максимальному значению.

Related Images:

ML19

Задача. Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

Тесты

Длина окружности Точность  Результат работы программы
0 3 Невозможно выполнить для вырожденной окружности
-1 8 Ошибка ввода данных
34 -5 Ошибка ввода данных
25 18 Вывод с заданной точностью невозможен. Максимально возможная точность 13
25 13 49.7359197162173
83 5 548.20920
113.42 3 1 023.692
12 345 678 3 Вывод с заданной точностью невозможен. Максимально возможная точность 1
12 345 678 1 12 128 861 224 697.9
1 000 000 000 0 Число содержит больше 15 значащих цифр. Точный вывод невозможен

Алгоритм

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

Для удобства преобразуем известные нам формулы:

[latex]L = 2 \pi \cdot R[/latex]   [latex]S = \pi \cdot R^2 [/latex]  [latex] \longrightarrow[/latex]  [latex]R= \frac{L}{2\pi}[/latex]  [latex]\longrightarrow[/latex]  [latex]S = \frac{L^2}{4\pi}[/latex];

Воспользовавшись данной формулой находим искомую величину. Однако реализуя вывод с заданной точностью, требуется проверить сможет ли используемый нами тип данных double его обеспечить. Принимая во внимание факт, что данный тип хранит не более чем [latex]15[/latex] значащих десятичных цифр осуществляем следующую последовательность действий:

  1. Находим значение переменной possibleAccuracy как разность между максимально возможным количеством значащих цифр (maxAccuracy = [latex]15[/latex]) и имеющемся в данном числе .
  2. Отрицательное значение переменной possibleAccuracy сигнализирует о том, что найденная площадь круга превышает [latex] 10^{15} [/latex]. Следовательно, выводим предупреждение о том, что точный подсчет невозможен даже с нулевой точностью после запятой.
  3. При условии, что запрашиваемая точность превышает максимальную, выводим уведомление и значение максимальной точности.
  4. При ложности  пункта 2 и 3, используя манипулятор setprecision, выводим нужное количество знаков.

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

 

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

Related Images:

e-olymp 911. Квадратное уравнение

Условие

Составить программу для решения квадратного уравнения [latex]ax^2 + bx + c = 0[/latex] [latex](a\neq0)[/latex].

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

В одной строке задано три целых числа — коэффициенты квадратного уравнения соответственно [latex]a[/latex], [latex]b[/latex] и [latex]c[/latex]. Значения коэффициентов не превышают по модулю [latex]100[/latex].

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

В одной строке вывести в случае отсутствия корней сообщение «No roots» (без кавычек), в случае, если решение содержит один корень вывести сначала сообщение «One root:» (без кавычек), а далее через пробел сам корень, в случае наличия двух корней вывести сначала сообщение «Two roots:» (без кавычек), а далее через пробел сначала меньший, а потом больший корень. Гарантируется, что в случае наличия решений все корни целочисленные.

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

Тесты

 Входные данные Выходные данные
 1 -5 6  Two roots: 2 3
 1 10 25  One root: -5
 1 2 3  No roots
 2 6 7  No roots
 1 -2 1  One root: 1
 2 -9 4  Two roots: 0 4
 3 10 -8  Two roots: -4 0
 1 6 9  One root: -3
 3 -7 10  No roots

 

Код

Решение

Каждый в школе в классе 7 узнает как решать квадратное уравнение. Для того чтобы его решить надо сначала найти дискриминант: [latex]d=(b\cdot b)-(4\cdot a\cdot c)[/latex], а потом подставить его в следующие формулы для нахождения корней квадратного уравнения: [latex]x1=(-b+\sqrt d)/(2\cdot a)[/latex] и [latex]x2=(-b-\sqrt d)/(2\cdot a)[/latex]. Однако для квадратного уравнения существует 3 варианта ответов зависящие от дискриминанта. Все 3 варианта расписаны в if-блоках, где сначала проверяется дискриминант и от его значения уже определяется сколько корней у нас будет. После этого выводятся корни, гарантированно целочисленные, или надпись «No roots», если их нет.
Код программы
Засчитанное решение

Related Images:

e-olymp 126. Номер квартиры

Задача. Многоквартирный дом имеет [latex]N[/latex] квартир, [latex]P[/latex] подъездов и [latex]Q[/latex] этажей, причем на каждом этаже каждого подъезда имеется одинаковое количество квартир. Определить в каком подъезде и на каком этаже находится квартира с заданным номером [latex]K[/latex].

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

В единственной строке файла записаны значения [latex]N[/latex], [latex]P[/latex], [latex]Q[/latex], [latex]K[/latex]. [latex]1[/latex] ≤ [latex]K[/latex] ≤ [latex]N[/latex] ≤ [latex]1000[/latex], [latex]P\cdot Q[/latex] ≤ [latex]N[/latex].

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

В единственную строку файла нужно вывести номер подъезда и этаж, на котором находится квартира с номером [latex]K[/latex].

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

Тесты

  Входные данные    Выходные данные
      250   5    5     1                  1  1
        30   2    5     27                  2  4
      300  3    10   111                  2  2
        80  5     4     77                  5  4
        98  7     2     39                  3  2
        90  3     15   90                  3  15

Перед нами была поставлена задача определить в доме с заданным количеством квартир, подъездов и этажей положение конкретной квартиры, а именно указать номер подъезда и этаж. Для дальнейшего хода решения определим две целочисленные переменные — flatEntrance (количество квартир в одном подъезде) и flatFloor (количество квартир на одном этаже). Найдем номер подъезда получив целую часть от деления номера квартиры на количество квартир в одном подъезде. Далее выполняем проверку остатка от деления, если он отличен от нуля, то это указывает на то, что квартира находится уже в следующем подъезде. В таком случае инкрементируем переменную entrance.

Для нахождения номера этажа поступим аналогично. Однако следует проверить не делится ли номер квартиры на количество квартир в одном подъезде нацело, если да — она располагается на последнем этаже. Если этого не сделать, то в последующей формуле получим [latex]0[/latex]. В общем случае номер этажа находим поделив остаток от деления номера квартиры на количество квартир в подъезде на количество квартир на этаже (учитываем, что каждый новый подъезд предполагает продолжение нумерации с первого этажа). И снова выполняем проверку остатка от деления. При надобности инкрементируем переменную floor.

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

Следует отметить, что упростить программу и избавиться от двух условных операторов можно подключив библиотеку math.h и воспользовавшись функцией ceil() — округлением до ближайшего большего целого числа. Тогда код программы выглядит так:
Код программы
Засчитанное решение

Related Images:

e-olymp 125. Олимпиада

Условие

Олимпиада началась в [latex]h_1[/latex] часов [latex]m_1[/latex] минут [latex]s_1[/latex] секунд, а закончилась в эти же календарные сутки в [latex]h_2[/latex] часов [latex]m_2[/latex] минут [latex]s_2[/latex] секунд. Сколько времени (час мин сек) проходила олимпиада?

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

В первой строке записано время начала, а во второй время окончания олимпиады в формате час мин сек.

[latex]0 \le h_1 \le h_2 \le 23[/latex], [latex]0 \le m_1, m_2 \le 59[/latex], [latex]0 \le s_1, s_2 \le 59[/latex].

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

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

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

Входные данные Выходные данные
1 9 30 0

12 45 30

3 15 30
2 9 30 30

12 45 0

3 14 30
3 9 45 0

12 30 30

2 45 30
4 9 45 30

12 30 0

2 44 30

Код

Решение

Очевидным решением задачи является вывод через пропуск разниц  [latex]h_2 — h_1[/latex], [latex]m_2 — m_1[/latex] и [latex]s_2 — s_1[/latex]. Однако если часы, минуты или секунды конца олимпиады будут меньше соответсвующих значений ее начала, то результат разницы разницы будет отрицательным. Чтобы этого избежать, существуют два if-блока, которые увеличивают количество секунд на [latex]60[/latex] и уменьшают количество минут на [latex]1[/latex], а так же выполняют аналогичные действия с минутами и часами в том случае, если входное количество минут или секунд начала олимпиады будут превышать соответственно минуты и секунды конца. После этого выводятся разницы, указанные в начале решения, которые теперь будут отображать реальную продолжительность олимпиады и гарантированно будут неотрицательными.

Ссылки

Условие задачи на E-Olymp;

Код программы на Ideone.com;

Подтверждение решения на E-Olymp.

Related Images:

e-olymp 918. Какая четверть?

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

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

В единственной строке через пробел заданы [latex]2[/latex] вещественных числа — координаты точки, значения координат по модулю не превышают [latex]100[/latex].

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

Единственное число — номер соответствующей четверти, либо [latex]0[/latex], если однозначно определить четверть невозможно.»

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

Тесты

[latex]x[/latex] [latex]y[/latex] четверть [latex]x[/latex] [latex]y[/latex] четверть
2 -2 4 0 54 0
5 7 1 -3 4 2
-3 0 0 -3 -8 3
0 0 0

Поскольку в любом случае мы обращаемся к оператору вывода, имеет смысл вложить условия в этот оператор.  Сначала мы проверяем, не равна ли хотя бы одна переменная нулю. Если да — выводим [latex] 0[/latex], если нет — проверяем, больше ли [latex]x[/latex] нуля. Если да — это будет первая или четвертая четверть, если нет — вторая или третья. Внутри проверки [latex]x[/latex] проверяем [latex]y[/latex]. Если y больше нуля — это первая или вторая четверть, если меньше — вторая или третья.

Related Images:

e-olymp 903. Первая или последняя?

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

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

Задано трехзначное число. Какая цифра в нем больше: первая или последняя?

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

Одно трехзначное число.

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

Вывести большую из указанных цифр. В случае их равенства вывести знак «=» (без кавычек).

Тесты:

Входные данные Результат
1 328 8
2 956 9
3 384 4
4 672 6
5 558 8
6 733 7
7 797 =
8 555 =

 

 

ideone.com

Пояснение:

Для того чтобы определить первую цифру [latex] (a) [/latex] трехзначного числа [latex]n[/latex] необходимо найти целую часть от деления этого числа на сто, воспользовавшись формулой  [latex]a = n/100[/latex]. Чтобы определить вторую цифру [latex] (b) [/latex] необходимо найти остаток от деления числа на десять, воспользовавшись формулой [latex]b=n[/latex][latex]\%[/latex][latex]10[/latex] . Затем необходимо проверить равны ли эти цифры, если нет-найти большую.

Засчитанное решение на e-olymp.com

Related Images:

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 можно увидеть здесь.

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

Related Images:

e-olymp 108. Среднее число

Задача взята с сайта E-Olymp.

Условие:

Дано три различных числа [latex]a[/latex],  [latex]b[/latex],  [latex]c[/latex]. Вывести среднее из них.

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

Числа [latex]a[/latex],  [latex]b[/latex],  [latex]c[/latex] целые и по модулю не превышают 1000.

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

Единственное число — ответ на задачу.

Тесты

I число ([latex]a[/latex]) II число ([latex]b[/latex]) III число ([latex]c[/latex]) среднее
22 20 21 21
22 21 20 21
21 22 20 21
20 21 22 21
21 20 22 21
20 22 21 21

Решение<

Для проверки чисел и вывода используется тернарный оператор. 1) Если первое число ([latex]a[/latex]) больше третьего числа ([latex]c[/latex]), переходим к проверке 2) [latex]c[/latex]>[latex]b[/latex] ([latex]b[/latex] второе число. ) Если это так, среднее число [latex]c[/latex]. Если с не больше [latex]b[/latex], проверяем, больше ли [latex]a[/latex] чем [latex]b[/latex]. Если это так, то среднее число [latex]b[/latex], если нет среднее [latex]a[/latex].

Вернемся к проверке 1). [latex]a[/latex] < [latex]c[/latex], проверяем 3) [latex]b[/latex]<[latex]c[/latex]? Если да, проверяем [latex]a[/latex]<[latex]b[/latex]. Если да, то среднее [latex]b[/latex]. Если нет, среднее [latex]a[/latex]. В случае, если в проверке 3) [latex]b[/latex]>[latex]c[/latex], среднее [latex]c[/latex].

Для перехода к странице на E-Olimp с полностью выполненным  данным заданием щелкните тут.

Ссылка на решение на Ideone

Related Images:

e-olymp 923. Время года

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

Условие:

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

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

Одно число — номер месяца.

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

Для весенних месяцев вывести Spring, для летних — Summer, для осенних — Autumn и для зимних — Winter.

Тесты

Входные данные Выходные данные
1 1 Winter
2 4 Spring
3 6 Summer
4 10 Autumn
Ссылку на полностью засчитанное решение на сайте e-olymp можно найти здесь.

Ссылка на ideone.

Решение:

Для решения данной задачи необходимо использовать переменную с целочисленным значением, которое соответствует порядковому номера месяца (от 1 до 12 включительно). Вводим переменную с помощью оператора [latex] cin [/latex]. Выводим, какому времени года принадлежит введённый нами месяц, используя тернарную операцию и поочерёдно проверяя, какому из условий (различные остатки от деления на 12) удовлетворяет переменная. Если остаток от деления номера месяца будет [latex]<3[/latex], то программа выведет сообщение «Winter». По аналогии проверяем остальные возможные варианты: если остаток от деления [latex]<6[/latex], [latex]<9[/latex], то появится сообщение «Spring» или «Summer» соответственно. В ином случае месяц будет осенним, а программа выведет сообщение «Autumn».

Related Images:

e-olymp 915. Прямоугольный или нет?

Задача. Прямоугольный или нет?

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

Задано длины сторон треугольника. Определить, является ли этот треугольник прямоугольным.

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

В единственной строке задано 3 натуральных числа — длины сторон треугольника. Длины сторон не превышают 1000.

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

Вывести «YES» (без кавычек), если треугольник прямоугольный, или «NO» (без кавычек) в противном случае.

Тесты

a b c answer
3 4 5 «YES»
1 2 3 «NO»
5 3 4 «YES»

Код:

Объяснение Кода:

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

Я проверял через теорему Пифагора «В прямоугольном треугольнике площадь квадрата, построенного на гипотенузе,  равна сумме площадей квадратов, построенных на катетах. (wikipedia)». То есть стороны подставлял в формулу  [latex]a^2+b^2=c^2[/latex], где [latex]a[/latex] и [latex] b[/latex] катеты а [latex]c[/latex]  гипотенуза.  Если стороны подходят в формулу то можно построить прямоугольник и выводим «YES»  в противном случае выводим «NO». Проверял я через тернарный оператор _?_:_  c проверкой трёх вариантов гипотенузы.

Ссылка на задачу в e-olimp.

Ссылка на код в ideone.

Ссылка на пройденные тесты в e-olimp.

 

Related Images: