Во всех задачах этого листка нельзя использовать строковые типы данных и операции с ними.
Поскольку работа с действительными числами содержит элементы магии, а некоторые из этих задач — новые, то тесты могут меняться и добавляться, а ваши решения могут быть перетестированы даже после получения OK.
Для увеличения числа выводимых знаков действительных чисел, можно использовать метод
precision
, вызывается так: cout.precision(16)
.
Не забудьте, что действительные числа представляются неточно, поэтому сравнивать их нужно с использованием \(\varepsilon\) (числа \(a\) и \(b\) считаются равными, если \(|a-b|\lt\varepsilon\) для некоторого маленького \(\varepsilon\)).
Аналогично в задачах, где нужно вывести действительное число, ваш ответ может незначительно отличаться от правильного ответа. В тестирующей системе сравнение результата с правильным ответом осуществляется с допущением некоторой погрешности.
Дано положительное действительное число X. Выведите его целую часть.
Ввод | Вывод |
---|---|
17.9 |
17 |
Дано положительное действительное число X. Выведите его дробную часть абсолютно точно. Исходное число содержит не более 6 знаков после десятичной точки.
Ввод | Вывод |
---|---|
17.9 |
0.9 |
Дано положительное действительное число X. Выведите его первую цифру после десятичной точки. При решении этой задачи нельзя пользоваться условной инструкцией и циклом.
Ввод | Вывод |
---|---|
1.79 |
7 |
Цена товара обозначена в рублях с точностью до копеек, то есть действительным числом с двумя цифрами после десятичной точки. Запишите в две целочисленные переменные стоимость товара в виде целого числа рублей и целого числа копеек и выведите их на экран.
При решении этой задачи нельзя пользоваться условными инструкциями и циклами.
Ввод | Вывод |
---|---|
10.35 |
10 35 |
Галилей сбрасывает (без начальной скорости) камень с Пизанской башни, высота которой равна \(h\) метров. Определите время падения камня в секундах. Значение \(g=9.8\) м/с2.
Программа получает на вход действительное число \(h\) и должна вывести значение времени.
Ввод | Вывод |
---|---|
55.86 |
3.37639 |
Под разгоном автомобиля подразумевается время, за которое этот автомобиль с места разгоняется до скорости 100 км/ч. Например, шестая модель Жигулей разгоняется до 100 км/ч за 17.4 с, а Porshe–911 — за 5.1 с.
Полагаем, что автомобиль разгоняется с постоянным ускорением. Найдите это ускорение, выразив его в значениях, кратных \(g\) (то есть какую перегрузку испытывает водитель этого автомобиля при разгоне).
Программа получает на вход значение скорости, до которой осуществляется разгон \(v\) в км/ч, а потом — время разгона \(t\) в секундах.
Ввод | Вывод |
---|---|
100.0 |
0.1629 |
100.0 |
0.555778 |
МКАД представляет собой окружность длиной \(L\). Рассмотрим систему координат, центр окружности находится в начале координат. Байкер Вася выезжает из точки пересечения МКАД с положительным направлением оси OX и едет против часовой стрелки. Определите координаты Васи после того, как он проехал расстояние \(K\).
Программа получает на вход два действительных числа \(L\) и \(K\) и должна вывести два числа — координаты Васи.
Ввод | Вывод | Примечание |
---|---|---|
6.283185307179586 |
-0.7071067811865475 |
Дана окружность радиуса 1, движение начинается в точке (1, 0), Вася проезжает 3/8 окружности. |
Вы находитесь в начале координат. В точке с координатами \((x, y\)) находится центр круглой колонны радиусом \(r\). Определите, под каким углом вы видите колонну.
Программа получает на вход три действительных числа \(x\), \(y\) и \(r\) и должна вывести значение угла в градусах. Гарантируется, что начало координат не находится внутри колонны.
Ввод | Вывод | Примечание |
---|---|---|
2.0 |
53.13010235415598 |
Угол немного больше 45 градусов. |
В условии предыдущей задачи вы хотите окружить колонну верёвкой, концы которой вы держите в руках. Определите минимальную длину верёвки.
Входные данные аналогичны предыдущей задаче, программа должна вывести минимальную длину верёвки.
Ввод | Вывод |
---|---|
2.0 |
8.068887871591405 |
Правильный \(n\)-угольник вписан в окружность радиуса \(r\). Найдите его периметр и площадь.
Программа получает на вход целое число \(n\ge 3\) и действительное \(r \gt 0\).
Программа должна вывести периметр и площадь данного \(n\)-угольника.
Ввод | Вывод |
---|---|
4 |
5.65685424949238 |
Даны произвольные действительные коэффициенты \(a\), \(b\), \(c\). Решите уравнение \(ax^2+bx+c=0\).
Если данное уравнение не имеет корней, выведите число 0. Если уравнение имеет один корень, выведите число 1, а затем этот корень. Если уравнение имеет два корня, выведите число 2, а затем два корня в порядке возрастания. Если уравнение имеет бесконечно много корней, выведите число 3.
Не забывайте про точность представления действительных чисел и правила их сравнения.
Ввод | Вывод |
---|---|
1 |
2 -1.0 2.0 |
-1 |
1 1.0 |
Дан многочлен \(P(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_1x+a_0\) и число \(x\). Вычислите значение этого многочлена, воспользовавшись схемой Горнера: \[ P(x)= \left( ... \left( \left( \left( a_n x + a_{n-1} \right) x + a_{n-2} \right) x + a_{n-3} \right) ... \right) x + a_{0} \]
Сначала программе подается на вход целое неотрицательное число \(n\le20\), затем действительное число \(x\), затем следует \(n+1\) вещественное число — коэффициенты многочлена от старшего к младшему. Программа должна вывести значение многочлена.
При решении этой задачи нелья использовать массивы и операцию возведения в степень. Программа должна иметь сложность \(O(n)\).
Ввод | Вывод |
---|---|
1 |
1.0 |
2 |
1.75 |
Даны числа \(a\), \(b\), \(c\), \(d\), \(e\), \(f\). Известно, что система линейных уравнений \[ \cases{ax + by = e, \cr cx + dy = f.} \]
имеет ровно одно решение. Выведите два числа \(x\) и \(y\), являющиеся решением этой системы.
Ввод | Вывод |
---|---|
1 |
3.0 3.0 |
Самолет летит на высоте \(h\) метров со скоростью \(v\) м/c. Ему необходимо поразить бомбой цель. На каком расстоянии \(x\) от цели (в метрах) необходимо выпустить бомбу?
Программа получает на вход вещественные числа \(h\) и \(v\) и должна вывести значение \(x\).
В этой и последующей задачах ускорение свободного падения \(g=9.8\), сопротивлением воздуха пренебречь.
Ввод | Вывод |
---|---|
1000 |
4285.714285714285 |
Пушка стреляет снарядом со скоростью \(v\) м/c под углом \(\alpha\) к горизонту (в радианах). На каком расстоянии \(x\) (в метрах) от пушки упадет снаряд?
Программа получает на вход числа \(v\) и \(\alpha\) и должна вывести значение \(x\).
Ввод | Вывод |
---|---|
500 |
9934.141385424757 |
В условиях предыдущей задачи по данной скорости выстрела \(v\) и расстоянию до цели \(x\) определите, под каким углом \(\alpha\) к горизонту (в радианах) необходимо произвести выстрел для поражения цели.
Программа получает на вход числа \(v\) и \(x\) и должна вывести все возможные значения \(\alpha\) в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
500 |
0.2014022918218565 |
100 |
0 |
Пушка стреляет снарядом со скоростью \(v\) м/c и должна поразить цель, находящуюся на расстоянии \(x\) метров по горизонтали и на высоте \(y\) метров. Под каким углом \(\alpha\) к горизонту (в радианах) необходимо произвести выстрел?
Программа получает на вход числа \(v\), \(x\), \(y\) и должна вывести все возможные значения \(\alpha\) в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
500 |
0.2118388917004956 |
400 |
0 |
Бесконечную таблицу, строки и столбцы которой пронумерованы целыми числами начиная с 1 сверху вниз и слева направо, заполняют целыми числами 1, 2, 3 и т.д. Числа выписываются в соседние клетки по границам квадратов увеличивающегося размера (см. рисунок).
Дано число \(n\le 10^{18}\), определите номер строки и номер столбца, в котором окажется это число.
Программа должна вывести два целых числа: номер строки и номер столбца, в которых находится число \(n\) в этой таблице.
При выполнении этой задачи попробуйте использовать тип данных long double
, если будут возникать
проблемы. Проверяйте работу своей программы на максимальных тестах.
Ввод | Вывод |
---|---|
15 |
4 2 |
Даны три числа, являющиеся сторонами невырожденного треугольника. Определите углы этого треугольника (воспользуйтесь теоремой косинусов) и определите его тип.
Программа получает на вход три числа, являющихся сторонами треугольника. Гарантируется, что треугольник с такими сторонами существует.
Программа должна вывести одну из следующих строк: «acute» (остроугольный), «right» (прямоугольный), «obtuse» (тупоугольный). Затем нужно вывести углы треугольника в градусах в порядке неубывания.
Ввод | Вывод |
---|---|
3 |
acute |
0.3 |
right |
Вам задан маршрут передвижения по местности, состоящий из \(n\) прямолинейных участков заданной длины с заданным углом поворота между участками. Вам необходимо определить, на каком расстоянии находится конец маршрута от начала маршрута.
Программа получает на вход число \(n\), затем записаны \(2n-1\) действительных чисел. Первое, третье, ...., последнее число в этом списке задают длины участков (это положительные числа), а второе, четвёртое, ... — значение угла поворота между участками в градусах. Поворот может быть нулевым (это означает, что движение продолжается в том же направлении), положительным или отрицательным.
Программа должна вывести одно действительное число — расстояние между начальной и конечной точками маршрута. Затем в следующей строке программа должна вывести слово «YES» если начало и конец маршрута совпадают, или слово «NO» в противном случае.
Ввод | Вывод |
---|---|
3 |
20 |
3 |
0 |
У вас имеется \(v_1\) литров раствора концентрации \(p_1\%\) и \(v_2\) литров раствора концентрации \(p_2\%\). Вам необходимо получить \(v\) литров раствора концентрации \(p\%\) используя только данные растворы.
Программа получает на вход числа \(v_1\), \(p_1\), \(v_2\), \(p_2\), \(v\), \(p\). Все числа — действительные, не превосходят 100.
Если получить нужный объём требуемого раствора возможно, выведите слово «YES», затем выведите два числа: необходимое количество литров первого раствора и второго раствора, которое нужно взять. Иначе выведите одно слово «NO».
Ввод | Вывод |
---|---|
10.0 |
YES |
10.0 |
NO |
В этих примерах смешиваются 10 л раствора концентрации 5% и 20 л раствора концентрации 10%, нужно получить концентрацию 7%. В первом примере нужно получить 10 л и для этого нужно взять 6 л первого раствора и 4 л второго раствора. Во втором примере нужно получить 20 л смеси концентрации 7% и это сделать нельзя.
Даны действительные числа \(a\), \(b\), \(c\), \(d\), \(e\), \(f\). Решите систему линейных уравнений \[ \cases{ax + by = e, \cr cx + dy = f.} \]
Вывод программы зависит от вида решения этой системы.
Если система не имеет решений, то программа должна вывести единственное число 0
.
Если система имеет бесконечно много решений, каждое из которых имеет вид \(y=kx+b\), то
программа должна вывести число 1
, а затем значения \(k\) и \(b\).
Если система имеет единственное решение \((x_0,y_0)\), то программа должна вывести
число 2
, а затем значения \(x_0\) и \(y_0\).
Если система имеет бесконечно много решений вида \(x=x_0\), \(y\) — любое, то
программа должна вывести число 3
, а затем значение \(x_0\).
Если система имеет бесконечно много решений вида \(y=y_0\), \(x\) — любое, то
программа должна вывести число 4
, а затем значение \(y_0\).
Если любая пара чисел \((x,y)\) является решением, то программа должна вывести число 5
.
В этой задаче не будет тестов, связанных с точностью представления действительных чисел.
Ввод | Вывод |
---|---|
1 |
2 3.0 3.0 |
1 |
1 -1.0 1.0 |
0 |
4 0.5 |