У задачі слід розв'язати квадратне рівняння за формулою
де — дискримінант квадратного рівняння, рівний b^2 - 4ac.
Залежно від знака дискримінанта можливі три випадки:
d < 0, рівняння не має коренів;
d = 0, рівняння має один корінь;
d > 0: рівняння має два корені, які слід вивести в порядку зростання;
Реалізація алгоритму
Оскільки коефіцієнти рівняння і його корені (в разі їх наявності) цілочисельні, то всі обчислення будемо проводити в цілих числах. Читаємо вхідні дані.
scanf("%d %d %d", &a, &b, &c);Вичислюємо дискримінант квадратного рівняння.
d = b * b - 4 * a * c;Залежно від знака дискримінанта виводимо відповідь.
if (d < 0)
printf("No roots\n");
else if (d == 0)
{
x1 = -b / (2 * a);
printf("One root: %d\n", x1);
}
else
{
x1 = (-b - sqrt(d)) / (2 * a);
x2 = (-b + sqrt(d)) / (2 * a);
printf("Two roots: ");
if (x1 < x2)
printf("%d %d\n", x1, x2);
else
printf("%d %d\n", x2, x1);
}Java реалізація
import java.util.*;
public class Main
{
public static void main(String []args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt();
int b = con.nextInt();
int c = con.nextInt();
int d = b * b - 4 * a * c;
double x1 = (-b - Math.sqrt(d)) / (2 * a);
double x2 = (-b + Math.sqrt(d)) / (2 * a);
if (d == 0)
System.out.printf("One root: %.0f\n", x1);
else if (d < 0)
System.out.printf("No roots\n");
else if (x1 < x2)
System.out.printf("Two roots: %.0f %.0f\n", x1, x2);
else
System.out.printf("Two roots: %.0f %.0f\n ", x2, x1);
con.close();
}
} Python реалізація
import mathОскільки коефіцієнти рівняння і його корені (в разі їх наявності) цілочисельні, то всі обчислення будемо проводити в цілих числах. Читаємо вхідні дані.
a, b, c = map(int, input().split())Вичислюємо дискримінант квадратного рівняння.
d = b * b - 4 * a * cЗалежно від знака дискримінанта виводимо відповідь.
if d < 0:
print("No roots")
elif d == 0:
x1 = -b // (2 * a)
print("One root:", x1)
else:
x1 = int((-b - math.sqrt(d)) // (2 * a))
x2 = int((-b + math.sqrt(d)) // (2 * a))
print("Two roots:", min(x1, x2), max(x1, x2))