В этом листочке речь пойдет о действительных числах, имеющих тип float.

Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возращаемый функцией input() необходимо преобразовывать к типу float:

x = float(input())
		

Действительные (вещественные) числа представляются в виде чисел с десятичной точкой (а не запятой, как принято при записи десятичных дробей в русский текстах). Для записи очень больших или очень маленьких по модулю чисел используется так называемая запись “с плавающей точкой” (также называемая “научная” запись). В этом случае число представляется в виде некоторой десятичной дроби, называемой мантиссой, умноженной на целочисленную степень десяти (порядок). Например, расстояние от Земли до Солнца равно 1.496·1011, а масса молекулы воды 2.99·10-23.

Числа с плавающей точкой в программах на языке Питон, а также при вводе и выводе записавыются в виде мантиссы, затем пишется буква e, затем пишется порядок. Пробелы внутри этой записи не ставятся. Например, указанные выше константы можно записать в виде 1.496e11 и 2.99e-23. Перед самим числом также может стоять знак минус.

Напомним, что результатом операции деления / всегда является действительное число, в то время как результатом операции // является целое число.

Преобразование действительных чисел к целому производится с округлением в сторону нуля, то есть int(1.7) == 1, int(-1.7) == -1.

Библиотека math

Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется math.

Для использования этих функций в начале программы необходимо подключить математическую библиотеку, что делается командой

import math
		

Функция от одного аргумента вызывается, например, так: math.sin(x) (то есть явно указывается, что из модуля math используется функция sin). Вместо числа x может быть любое число, переменная или выражение. Функция возращает значение, которое можно вывести на экран, присвоить другой переменной или использовать в выражении:

y = math.sin(x)
print(math.sin(math.pi/2))
		

Другой способ использовать функции из библиотеки math, при котором не нужно будет при каждом использовании функции из модуля math указывать название этого модуля, выглядит так:

from math import sin, cos

y = sin(x)
print(sin(pi/2))
		

Ниже приведен список основных функций модуля math. Более подробное описание этих функций можно найти на сайте с документацией на Питон.

Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.

Функция Описание
Округление
int(x) Округляет число в сторону нуля. Это стандартная функция, для ее использования не нужно подключать модуль math.
round(x) Округляет число до ближайшего целого. Если дробная часть числа равна 0.5, то число округляется до ближайшего четного числа.
round(x, n) Округляет число x до n знаков после точки. Это стандартная функция, для ее использования не нужно подключать модуль math.
floor(x) Округляет число вниз (“пол”), при этом floor(1.5) == 1, floor(-1.5) == -2
ceil(x) Округляет число вверх (“потолок”), при этом ceil(1.5) == 2, ceil(-1.5) == -1
trunc(x) Округление в сторону нуля (так же, как функция int).
abs(x) Модуль (абсолютная величина). Это - стандартная функция.
fabs(x) Модуль (абсолютная величина). Эта функция всегда возвращает значение типа float.
Корни, степени, логарифмы
sqrt(x) Квадратный корень. Использование: sqrt(x)
pow(a, b) Возведение в степень, возвращает ab. Использование: pow(a,b)
exp(x) Экспонента, возвращает ex. Использование: exp(x)
log(x) Натуральный логарифм. При вызове в виде log(x, b) возвращает логарифм по основанию b.
log10(x) Десятичный логарифм
e Основание натуральных логарифмов \(e\approx2{,}71828...\).
Тригонометрия
sin(x) Синус угла, задаваемого в радианах
cos(x) Косинус угла, задаваемого в радианах
tan(x) Тангенс угла, задаваемого в радианах
asin(x) Арксинус, возвращает значение в радианах
acos(x) Арккосинус, возвращает значение в радианах
atan(x) Арктангенс, возвращает значение в радианах
atan2(y, x) Полярный угол (в радианах) точки с координатами (x, y).
hypot(a, b) Длина гипотенузы прямоугольного треугольника с катетами a и b.
degrees(x) Преобразует угол, заданный в радианах, в градусы.
radians(x) Преобразует угол, заданный в градусах, в радианы.
pi Константа π

Упражнения

Во всех задачах этого листка нельзя использовать строковые типы данных и операции с ними.

A: Целая часть

Дано положительное действительное число X. Выведите его целую часть.

Ввод Вывод
17.9
17

B: Дробная часть

Дано положительное действительное число X. Выведите его дробную часть абсолютно точно. Исходное число содержит не более 6 знаков после десятичной точки.

Ввод Вывод
17.9
0.9

C: Первая цифра после точки

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

Ввод Вывод
1.79
7

D: Округление по российским правилам

По российский правилам числа округляются до ближайшего целого числа, а если дробная часть числа равна 0.5, то число округляется вверх.

Дано неотрицательное число x, округлите его по этим правилам. Обратите внимание, что функция round не годится для этой задачи!

Ввод Вывод
2.3
2
2.5
3

E: Часы - 1

С начала суток прошло \(H\) часов, \(M\) минут, \(S\) секунд (\(0\le H <12\), \(0\le M < 60\), \(0\le S < 60\)). По данным целым числам \(H\), \(M\), \(S\) определите угол (в градусах), на который повернулаcь часовая стрелка с начала суток и выведите его в виде действительного числа.

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

Ввод Вывод
1
2
6
31.05

F: Часы - 2

С начала суток часовая стрелка повернулась на угол в \(\alpha\) градусов. Определите на какой угол повернулась минутная стрелка с начала последнего часа. Входные и выходные данные — действительные числа.

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

Пример

Ввод Вывод
190
120.0

G: Часы - 3

С начала суток часовая стрелка повернулась на угол в \(\alpha\) градусов. Определите сколько полных часов, минут и секунд прошло с начала суток, то есть решите задачу, обратную задаче F. Запишите ответ в три целочисленные переменные и выведите их на экран.

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

Ввод Вывод
31.05
1 2 6

H: Цена товара

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

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

Ввод Вывод
10.35
10 35

I: Квадратное уравнение - 1

Даны действительные коэффициенты \(a\), \(b\), \(c\), при этом \(a\ne0\). Решите квадратное уравнение \(ax^2+bx+c=0\) и выведите все его корни. Если уравнение имеет два корня, выведите два корня в порядке возрастания, если один корень — выведите одно число, если нет корней — не выводите ничего.

Ввод Вывод
1
-1
-2
-1.0 2.0

J: Проценты

Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада. Вклад составляет X рублей Y копеек. Определите размер вклада через год.

Программа получает на вход целые числа P, X, Y и должна вывести два числа: величину вклада через год в рублях и копейках. Дробная часть копеек отбрасывается.

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

Ввод Вывод
12
179
0
200 48

K: Сложные проценты

Процентная ставка по вкладу составляет P процентов годовых, которые прибавляются к сумме вклада через год. Вклад составляет X рублей Y копеек. Определите размер вклада через K лет.

Программа получает на вход целые числа P, X, Y, K и должна вывести два числа: величину вклада через K лет в рублях и копейках. Дробное число копеек по истечение года отбрасывается. Перерасчет суммы вклада (с отбрасыванием дробных частей копеек) происходит ежегодно.

Ввод Вывод
12
179
0
5
315 43

L: π2/6

По данному числу n вычислите сумму \(1+\frac{1}{2^2}+\frac{1}{3^2}+...+\frac{1}{n^2}\).

Ввод Вывод
3
1.3611111111111112

Знаете ли вы, что этот ряд сходится к \(\pi^2/6\)?

M: Экспонента

По данному целому числу n и действительному числу x вычислите сумму \( 1+\frac{x}{1!}+\frac{x^2}{2!}+\frac{x^3}{3!}+...+\frac{x^n}{n!}\)

Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n).

Ввод Вывод
2
0.1
1.105
10
0
1.0
100
1
2.7182818284590455

Этот ряд сходится к \(e^x\) при росте \(n\).

N: Косинус

По данному целому числу n и действительному числу x вычислите сумму \( 1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+...+(-1)^n\frac{x^{2n}}{(2n)!}\)

Операцией возведения в степень пользоваться нельзя. Алгоритм должен иметь сложность O(n).

Ввод Вывод
2
0.1
0.9950041666666667
10
0
1.0
50
3.14159
-0.9999999999964793

Этот ряд сходится к \(\cos x\) при росте \(n\) (углы измеряются в радианах).

O: Площадь треугольника

Даны длины сторон треугольник (три действительных числа). Вычислите площадь треугольника.

Ввод Вывод
3
4
5
6.0
1
1
1
0.4330127018922193

P: МКАД - 2

МКАД представляет собой окружность длиной \(L\). Рассмотрим систему координат, центр окружности находится в начале координат. Байкер Вася выезжает из точки пересечения МКАД с положительным направлением оси OX и едет против часовой стрелки. Определите координаты Васи после того, как он проехал расстояние \(K\).

Программа получает на вход два действительных числа \(L\) и \(K\) и должна вывести два числа — координаты Васи.

Ввод Вывод Примечание
6.283185307179586
2.356194490192345
-0.7071067811865475
0.7071067811865476

Дана окружность радиуса 1, движение начинается в точке (1, 0), Вася проезжает 3/8 окружности.

Q: Колонна

Вы находитесь в начале координат. В точке с координатами \((x, y)\) находится центр круглой колонны радиусом \(r\). Определите, под каким углом вы видите колонну.

Программа получает на вход три действительных числа \(x\), \(y\) и \(r\) и должна вывести значение угла в градусах. Гарантируется, что начало координат не находится внутри колонны.

Ввод Вывод Примечание
2
1
1
53.13010235415598

Угол немного больше 45 градусов.

R: Длина верёвки

В условии предыдущей задачи вы хотите окружить колонну верёвкой, концы которой вы держите в руках. Определите минимальную длину верёвки.

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

Ввод Вывод
2
1
1
8.068887871591405

S: Правильный многоугольник

Правильный \(n\)-угольник вписан в окружность радиуса \(r\). Найдите его периметр и площадь.

Программа получает на вход целое число \(n\ge 3\) и действительное \(r \gt 0\).

Программа должна вывести периметр и площадь данного \(n\)-угольника.

Ввод Вывод
4
1
5.65685
2

T: Квадратное уравнение - 2

Даны произвольные действительные коэффициенты \(a\), \(b\), \(c\). Решите уравнение \(ax^2+bx+c=0\).

Если данное уравнение не имеет корней, выведите число 0. Если уравнение имеет один корень, выведите число 1, а затем этот корень. Если уравнение имеет два корня, выведите число 2, а затем два корня в порядке возрастания. Если уравнение имеет бесконечно много корней, выведите число 3.

Ввод Вывод
1
-1
-2
2 -1.0 2.0
-1
2
-1
1 1.0

U: Схема Горнера

Дан многочлен \(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
0
1
1
1.0
2
0.5
1
1
1
1.75

V: Система линейных уравнений - 1

Даны числа \(a\), \(b\), \(c\), \(d\), \(e\), \(f\). Известно, что система линейных уравнений \[ \cases{ax + by = e, \cr cx + dy = f.} \]

имеет ровно одно решение. Выведите два числа \(x\) и \(y\), являющиеся решением этой системы.

Ввод Вывод
1
0
0
1
3
3
3.0 3.0

W: Баллистическая задача - 1

Самолет летит на высоте \(h\) метров со скоростью \(v\) м/c. Ему необходимо поразить бомбой цель. На каком расстоянии \(x\) от цели (в метрах) необходимо выпустить бомбу?

Программа получает на вход вещественные числа \(h\) и \(v\) и должна вывести значение \(x\).

В этой и последующей задачах ускорение свободного падения \(g=9.8\), сопротивлением воздуха пренебречь.

Ввод Вывод
1000
300
4285.714285714285

X: Баллистическая задача - 2

Пушка стреляет снарядом со скоростью \(v\) м/c под углом \(\alpha\) к горизонту (в радианах). На каком расстоянии \(x\) (в метрах) от пушки упадет снаряд?

Программа получает на вход числа \(v\) и \(\alpha\) и должна вывести значение \(x\).

Ввод Вывод
500
0.2
9934.141385424757

Y: Баллистическая задача - 3

В условиях предыдущей задачи по данной скорости выстрела \(v\) и расстоянию до цели \(x\) определите, под каким углом \(\alpha\) к горизонту (в радианах) необходимо произвести выстрел для поражения цели.

Программа получает на вход числа \(v\) и \(x\) и должна вывести все возможные значения \(\alpha\) в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.

Ввод Вывод
500
10000
0.2014022918218565
1.36939403497304
100
10000
0

Z: Баллистическая задача - 4

Пушка стреляет снарядом со скоростью \(v\) м/c и должна поразить цель, находящуюся на расстоянии \(x\) метров по горизонтали и на высоте \(y\) метров. Под каким углом \(\alpha\) к горизонту (в радианах) необходимо произвести выстрел?

Программа получает на вход числа \(v\), \(x\), \(y\) и должна вывести все возможные значения \(\alpha\) в порядке возрастания. Если поразить цель невозможно, программа должна вывести одно число 0.

Ввод Вывод
500
10000
100
0.2118388917004956
1.3689571017810664
400
10000
8000
0

ZA: Система линейных уравнений - 2

Даны числа \(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
0
0
1
3
3
2 3.0 3.0
1
1
2
2
1
2
1 -1.0 1.0
0
2
0
4
1
2
4 0.5