e-olymp 935. Разложение три цифрового числа

Постановка задачи

Разложить заданное трицифровое число на цифры.

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

В единственной строке задано целое трицифровое число.

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

Вывести каждую цифру в новой строке. Порядок вывода приведён в примере.

Тесты

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

3

5

2 267 2

6

7

3 -178 1

7

8

Код

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

Для начала задаем переменную(a) в которой будет трехзначное число, которое мы вводим с клавиатуры. Затем проверяем: отрицательное или положительное это число. Для того чтобы получить первую цифру этого числа воспользуемся простой формулой a/100, вторую цифру по формуле — (a/10)%10, и третью a%10.

 

Посмотреть, как работает программа со входными данными -173 можно на сайте  ideone.

ML7

Постановка задачи

Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.

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

Катеты прямоугольного треугольника — a и b

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

Площадь прямоугольного треугольника — area

Гипотенуза прямоугольного треугольника — c

Тесты

Входные данные Выходные данные
1 8 6 24 10
2 4 3 6 5
3 3 6 9 6.70

Решение:

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

Объявляем переменные  a, b, c, area типа  double , где  a, b  — катеты прямоугольного треугольника,  c  — гипотенуза, а  area  — площадь треугольника. Далее с клавиатуры вводим значения катетов прямоугольного треугольника. После чего по формуле площади треугольника и теореме Пифагора вычисляем площадь и гипотенузу треугольника. Для возведения в степень 2, будем использовать функцию  Math.pow() , для нахождения корня  Math.pow() .  В результате выводим значения площади  area  и гипотенузы  c  с помощью функции  System.out.println() .

KM17. Крестьянин на развилке

Задача из журнала «Квант» №4 1970 г.

Крестьянин, подойдя к развилке двух дорог, расходящихся под углом 60°, спросил: «Как пройти в село NN?». Ему ответили: «Иди по левой дороге до деревни N — это в восьми верстах отсюда,— там увидишь, что направо под прямым углом отходит большая ровная дорога,— это как раз дорога в NN. А можешь идти другим путём: сейчас по правой дороге; как выйдешь к железной дороге,— значит, половину пути прошёл; тут поверни налево и иди прямо по шпалам до самого NN«. — «Ну, а какой путь короче-то будет?» — «Да всё равно, что так, что этак, никакой разницы.» И пошёл крестьянин по правой дороге. Сколько вёрст ему придётся идти до NN? Больше десяти или меньше? А если идти от развилки до NN напрямик? (Все дороги прямые)

Более лаконичная версия:
Крестьянин стоит на развилке дорог, которые расходятся под углом 60°, и хочет попасть в село NN. Выбрав левую дорогу, он должен будет пройти n вёрст прямо, затем повернуть направо под прямым углом и идти до NN. Выбрав правую, он должен будет преодолеть участок некоторой длины прямо, затем повернуть налево и пройти такой же по длине участок. При этом известно, что длины левой и правой дорог одинаковы. От нас требуется найти длину пути по одной из дорог и длину пути напрямик.

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

Длина пути от развилки до N.

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

Длины путей по дороге и напрямик.

Тесты

Входные данные Выходные данные
n { s }_{ 1 } { s }_{ 2 }
1 0 0 0
2 8 11.0416 8.55871
3 0.5 0.690101 0.534919
4 21 28.9843 22.4666
5 13.45 18.5637 14.3893

Решение

Код можно увидеть и проверить его правильность тут: ideone

Пояснение

Обозначим развилку как A как, село B, место пересечения правой дороги с рельсами как D, и проведём DH \bot AB и DK \bot BC.

Пусть AD = 2x, тогда  AH = x; Из треугольника AHDBK = DH = x\cdot\sqrt { 3 };

KC=KB-BC=n+x \cdot \left(\sqrt{3}-4\right).
Из треугольника CKD по теореме Пифагора: {KC}^{2}+{KD}^{2}={CD}^{2}. Подставив значения, раскрыв скобки и проведя математические преобразования, получим квадратное уравнение {x}^{2}\cdot (-4\sqrt{3}+8)-x \cdot n \cdot (\sqrt{3}-5)+{n}^{2}=0.
Найдём дискриминант D={n}^{2}\cdot(6\sqrt{3}-4)KD=n-x и KD > 0, значит, n-x > 0 и x < n. Для первого из корней полученного квадратного уравнения это условие не выполняется, соответственно, мы имеем лишь один корень. Найдя его, мы найдём половину длины AD. Выведем формулу для его расчёта:x=\frac{n\cdot(5-\sqrt{3}-\sqrt {6\cdot\sqrt {3}-4 })}{8\cdot (2-\sqrt {3})} Тогда длина пути по дороге будет равна 4\cdot x, а длину пути напрямик мы найдём из треугольника ABC по теореме Пифагора: {s}_{2}=\sqrt{2\cdot ({n}^{2}-4x\cdot n+8{n}^{2})}.

e-olymp 906. Произведение цифр

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

Условие

Задано трицифровое число. Определить произведение его цифр.

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

В единственной строке заданное трицифровое число.

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

В единственной строке произведение цифр заданного числа.

Тесты

# Входные данные Результат
1 235 30
2 106 0
3 111 1

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

Для решения данной задачи необходимо задать переменную num, которая будет хранить в себе вводимые данные. Так как будут приниматься целочисленные данные, то используем тип данных int. Далее необходимо разбить исходное число на три цифры и перемножить их между собой.

Для разбиения на цифры воспользуемся формулой:

В данной формуле в первом множителе мы получаем первую цифру, во втором — вторую, и в третьем соответственно третью.

ML13. Площадь равностороннего треугольника

Постановка задачи

Дана сторона равностороннего треугольника. Найти площадь этого треугольника.

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

Сторона равностороннего треугольника a

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

Площадь равностороннего треугольника S

Тесты

Входные данные Выходные данные
1 4 6.928
2 3 3.897
3 6 15.588

Ссылка на результат теста на wolframalpha.com

Решение

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

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

Для нахождения площади равностороннего треугольника будем использовать формулу S = \frac{a^2\sqrt{3}}{4}. Чтобы найти корень, используем функцию Math.sqrt(). На экран выводим площадь треугольника.

e-olymp 7336. Пирожки

Постановка задачи

Пирожок в столовой стоит a гривен и b копеек. Найдите, сколько гривен и копеек заплатил Петя за n пирожков.

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

Три натуральных числа  a, b, n (0\leq a, b, n \leq100)

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

Через пропуск два числа: стоимость покупки в гривнах и копейках.

Тесты

Входные данные Выходные данные
1 5      9     2 10     18
2 0     15     18 2     70
3 5     25     0 0     0

Решение

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

Для объявления переменных a,b,n и total используем тип int, так как эти числа являются натуральными. Для простоты подсчета переводим сумму в копейки; так как в одной гривне 100 копеек, количество гривен мы умножаем на 100, прибавляем количество копеек, а затем умножаем получившуюся сумму в копейках на количество пирожков. Отсюда формула: total = (a*100 + b)*n.

В результате получаем число, в котором две последние цифры — это количество копеек, а остальные — количество гривен. Выводим их на экран с помощью соответствующих операций деления total/100 для гривен и деления по модулю total%100 для копеек.

Посмотреть решение задания можно на сайте e-olymp.

Посмотреть, как работает программа со входными данными 5, 9, 2 можно на сайте ideone.

ML36. Движение катера

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

Катер движется по течению реки из пункта A в пункт B и обратно с собственной скоростью v км/час. Скорость течения постоянна — u км/час. Расстояние между пунктами составляет s км. Для любых действительных неотрицательных значений расстояния и скоростей вычислить время в пути t_{boat}.

Тесты

Входные данные: физические величины v, u, s

Выходные данные: физическая величина t_{boat}

Входные данные Выходные данные
1 3 2 10 12.0
2 1.4 0.4 3.6 5.6
3 3 6 10 Infinity
4 2 1 0 0.0

Код

Код доступен на ideone

Пояснение

Скорость катера, когда он идет по течению, равна (v+u), а когда против — (v-u). Время t вычисляется по формуле t = \frac{s}{v}\\ , где s — расстояние, v — скорость, соответственно общее время  пути катера составит  t_{boat} = {\frac{s}{v+u}\\+\frac{s}{v-u}\\} . При этом время — величина неотрицательная, а делитель дроби не должен быть нулевым, соответственно имеем ограничение v-u > 0, v > u .

 

ML2

Задача

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

Тесты

Входные данные Выходные данные
 1            3        7                 -0.4
 2           -5      -2              0.4285
 3           -6       4                  0.2
 4            2       -3                 -0.2

Решение

Проверить работу кода можно в облаке по ссылке — http://ideone.com/h12CNL

Пояснения 

Используя тип double объявляем переменные x, y и  solution. После, инициализируем переменные  x и  y значениями из потока ввода. Далее, находим решение нашего выражения при использовании метода  abs() библиотеки Math. Решение присваиваем ранее объявленной переменной solution, после чего выводим его в консоль.

ML4.Линейные вычисления

Условие
Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

Тесты

Входные данные Выходные данные
1 -1 -3 -2 1.73205
2 5 6 5.5 5.47723
3 4 6 5 4.89898
4 100 2.6 51.3 16.1245
Решение
Так как нам в задаче не указано какой длины будут числа, мы используем тип данных long double, который поможет охватить весь их диапазон. Для того, чтобы найти среднее арифметическое чисел нам нужно воспользоваться формулой: A=\frac{x_1+x_2+ \ldots +x_n}{n}, но так как у нас задано всего два числа, будем пользоваться этой формулой: A= \frac{a+b}{2}. Среднее геометрическое вычисляется по формуле: G=\sqrt[n]{x_1+x_2+ \ldots +x_n}, но нам понадобиться формула только для двух чисел: G=\sqrt{a . b}

Ideone.com

KM31. Бумажные многоугольники

Задача

Задача из журнала «Квант» №7 1970 г.
Квадратный лист бумаги разрезают по прямой на две части. Одну из полученных частей снова разрезают на две части, и так делают много раз. Какое наименьшее число разрезов r нужно сделать, чтобы среди полученных частей оказалось n k -угольников?

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

Количество многоугольников n.
Количество углов многоугольника k.

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

Количество разрезов r.

Пример получения двух шестиугольников за 5 разрезов

Тесты

 Входные данные  Выходные данные
 №  n  k  r
 1  100  20  1699
 2  14  3  13
 3  1  3  1
 4  40  360  14279
 5  2  6  5

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

 

Решение

При каждом разрезе количество кусков бумаги nувеличивается на 1. Общее количество вершин k будет увеличиваться в зависимости от места разреза. Таким образом при разрезе через две стороны общее количество вершин будет увеличиваться на 4. При разрезе через две вершины общее количество вершин увеличивается на 2, а при разрезе через сторону и вершину — на 3.

При k>3 сначала разделим лист на nчетырёхугольников при помощи разрезов через противоположные стороны. На это нам понадобиться n-1 разрезов. Затем можем, при помощи разрезов через соседние стороны, превращать каждый четырехугольник в k — угольник, на что понадобиться k-4 разрезов.Выходит, что на получение n k— угольников нужно сделать не меньше n(k-4)+n-1 разрезов, значит r=n(k-3)-1.

Если же k=3, то нам нужно, наоборот, уменьшить количество вершин. Тогда первый разрез сделаем через две вершины квадрата — получаем два треугольника, затем каждым разрезом через вершину и сторону увеличиваем количество треугольников на 1 пока не получим n. В таком случае r= n-1 . Исключение: если n=1, то r=1.

Ссылка на Ideone

http://ideone.com/X0D8jF