Skip to content

Instantly share code, notes, and snippets.

@Reagent992
Last active July 6, 2023 12:55
Show Gist options
  • Save Reagent992/6c8789022838a3d838233679f89f4548 to your computer and use it in GitHub Desktop.
Save Reagent992/6c8789022838a3d838233679f89f4548 to your computer and use it in GitHub Desktop.
решалка квадратных уравнений по заданию из яндекс контекста
# Задача:
# Не все любят математику, а кто-то даже считает её настоящим злом во плоти, хотя от неё никуда не деться. К
# примеру, Python изначально разрабатывался только для решения математических задач, поэтому давайте используем его,
# чтобы найти корни квадратного уравнения.
#
# Формат ввода
# Вводится 3 вещественных числа a, b, c — коэффициенты уравнения вида:
# ax^2+bx+c=0
#
#
# Формат вывода
# Если у уравнения нет решений — следует вывести «No solution».
# Если корней конечное число — их нужно вывести через пробел в порядке возрастания с точностью до сотых.
# Если корней неограниченное число — следует вывести «Infinite solutions».
#
# Примечание
# Обратите внимание, что ограничения на значения коэффициентов отсутствуют.
#
# Пример 1
# Ввод
# 1
# -2
# 1
# Вывод
# 1.00
# Пример 2
# Ввод
# 3.5
# -2.4
# -7.3
# Вывод
# -1.14 1.83
# получаем вводные:
a = float(input())
b = float(input())
c = float(input())
# Квадратное уравнение имеет вид: ax² + bx + c = 0
# Стандартное решение через Дискриминант: D = b2 − 4ac
# если D < 0, корней нет;
# если D = 0, есть один корень;
# если D > 0, есть два различных корня.
# 0.9 Проверяем на <нули>
if a == 0 and b == 0 and c == 0:
print('Infinite solutions')
elif a == 0 and b == 0:
print('No solution')
else:
# 1. Проверяем уравнение на <квадратность>
if a == 0:
x = -c / b
print("{:.2f}".format(round(x, 2)))
# Уравнение не квадратное
# 2. Решаем не полные квадратные уравнения
if b == 0 and c == 0:
print("{:.2f}".format(round(0, 2)))
if a != 0 and b == 0 and c != 0: # x² = - c/а
if ((- c) / a) < 0:
print('No solution') # нет решений
elif ((-c) / a) > 0:
agg = abs(c / a) ** 0.5
ag = agg
ag2 = -agg
afk = min(ag, ag2)
afk2 = max(ag, ag2)
print(round(afk, 2), round(afk2, 2))
if a != 0 and b != 0 and c == 0:
print("{:.2f}".format(0), "{:.2f}".format(round((-b / a), 2)))
# 3 решаем полное квадратное уравнение:
# 3.1 Преобразуем неприведенное уравнение в приведенное.
# <2x² − 4x— 12 = 0> в <x² − 2x— 6>
if a > 1:
b = b / a
c = c / a
a = a / a
# 3.2 решаем полное квадратное уравнение:
if a != 0 and b != 0 and c != 0:
d = ((b ** 2) - (4 * a * c))
if d < 0:
print('No solution')
elif d == 0:
ans1 = -b / 2 * a
print("{:.2f}".format(round(ans1, 2)))
else:
x1 = (-b + d ** 0.5) / (2 * a)
x2 = (-b - d ** 0.5) / (2 * a)
prt1 = min(x1, x2)
prt2 = max(x1, x2)
if prt1 != prt2:
print("{:.2f}".format(round(prt1, 2)), "{:.2f}".format(round(prt2, 2)))
else:
print("{:.2f}".format(round(prt1, 2))),
@DudorovVasily
Copy link

#Короче намного можно

a = float(input())
b = float(input())
c = float(input())
d = b2 - 4 * a * c
if a == 0.0 and b == 0.0 and c == 0:
print("Infinite solutions")
elif a == 0.0 and b != 0.0:
print(f"{ - c / b:.2f}")
elif d > 0 and a != 0.0:
x1 = (-b - d
0.5) / (2 * a)
x2 = (-b + d**0.5) / (2 * a)
if x1 < x2:
print(f"{x1:.2f} {x2:.2f}")
else:
print(f"{x2:.2f} {x1:.2f}")
elif d == 0 and a != 0.0:
print(f"{-b / (2 * a):.2f}")
else:
print("No solution")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment