Advertisement
sacr1ficerq

Alexei Exam

May 4th, 2022
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.60 KB | None | 0 0
  1. from math import sqrt # Импортируем из дополнительного модуля квадратный корень (понадобится потом)
  2.  
  3. def solver(*args): # Создаем функцию solver, которая принимает на вход аргументы в качестве массива(набора чисел)
  4.  
  5.     if len(args) == 1:# len - от английского length (длина) возвращает размер массива (количество аргументов)
  6.         # c = 0
  7.         c = args[0]
  8.         if c == 0: # Уравнение вида 0 = 0 (верно для любого x)
  9.             return ['?'] # Просто возвращаем * как просили в условии
  10.         else: # Уравнение вида число=0 (не имеет решений ни при каких x)
  11.             raise Exception # Возвращаем пустой список
  12.  
  13.     elif len(args) == 2:
  14.         # bx + c = 0
  15.         b = args[0]
  16.         c = args[1]
  17.  
  18.         if b == 0:  # Имеем уравнение как в len(args) == 1: Смотри там
  19.             if c == 0: # При любых x: 0*x+0 = 0
  20.                 return ['?']
  21.             else: # Ни при каких x: 0x + с = 0
  22.                 raise Exception
  23.         else: # b != 0
  24.             x = -c / b
  25.             return [x, x]
  26.  
  27.     elif len(args) == 3: # Самая сложная часть
  28.         #ax^2 + bx +c
  29.         a = args[0]
  30.         b = args[1] / a # Делим на а, чтобы работать с приведенным квадратным уравнением (x^2 + bx + c)
  31.         c = args[2] / a
  32.  
  33.         if b == 0: # Уравнение вида ax^2 = -c
  34.             if c == 0:
  35.                 return [0, 0]
  36.             elif c < 0:
  37.                 return [sqrt(-c), -sqrt(-c)] # Деля на a и извлекая корень, получаем, что |x| = корень из (-с/a)
  38.         elif c == 0: # x(x+b) = 0
  39.             return [0, -b]
  40.         else: #Общий случай
  41.             d = b ** 2 - 4 * c #Дискриминант
  42.             if d == 0:
  43.                 return [-b / 2, -b / 2]
  44.             elif d > 0: #Положительный дискриминант
  45.                 x1 = round((-b + sqrt(d)) / 2, 6)
  46.                 x2 = round((-b - sqrt(d)) / 2, 6)
  47.                 return [x1, x2]
  48.  
  49.     else: # В этом случае, как написано в условии, просто возвращаем None
  50.         raise Exception
  51.  
  52.  
  53. a, b, c = map(int, input().split()) #Тест
  54. print(*solver(a, b, c))
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement