Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import sqrt # Импортируем из дополнительного модуля квадратный корень (понадобится потом)
- def solver(*args): # Создаем функцию solver, которая принимает на вход аргументы в качестве массива(набора чисел)
- if len(args) == 1:# len - от английского length (длина) возвращает размер массива (количество аргументов)
- # c = 0
- c = args[0]
- if c == 0: # Уравнение вида 0 = 0 (верно для любого x)
- return ['*'] # Просто возвращаем * как просили в условии
- else: # Уравнение вида число=0 (не имеет решений ни при каких x)
- return [] # Возвращаем пустой список
- elif len(args) == 2:
- # bx + c = 0
- b = args[0]
- c = args[1]
- if b == 0: # Имеем уравнение как в len(args) == 1: Смотри там
- if c == 0: # При любых x: 0*x+0 = 0
- return ['*']
- else: # Ни при каких x: 0x + с = 0
- return []
- else: # b != 0
- x = -c / b
- return [x]
- elif len(args) == 3: # Самая сложная часть
- #ax^2 + bx +c
- a = args[0]
- b = args[1] / a # Делим на а, чтобы работать с приведенным квадратным уравнением (x^2 + bx + c)
- c = args[2] / a
- if b == 0: # Уравнение вида ax^2 = -c
- if c == 0:
- return [0]
- elif c < 0:
- return [sqrt(-c), -sqrt(-c)] # Деля на a и извлекая корень, получаем, что |x| = корень из (-с/a)
- elif c == 0: # x(x+b) = 0
- return [0, -b]
- else: #Общий случай
- d = b ** 2 - 4 * c #Дискриминант
- if d == 0:
- return [-b / 2]
- elif d > 0: #Положительный дискриминант
- x1 = round((-b + sqrt(d)) / 2, 6)
- x2 = round((-b - sqrt(d)) / 2, 6)
- return [x1, x2]
- else: # В этом случае, как написано в условии, просто возвращаем None
- return None
- print(solver(int(input()), int(input()))) #Тест
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement