Квадратне рівняння#911

Квадратне рівняння (Розбір)

У задачі слід розв'язати квадратне рівняння за формулою

x = \frac{-b \pm \sqrt{d}}{2a},

де — дискримінант квадратного рівняння, рівний b^2 - 4ac.

Залежно від знака дискримінанта можливі три випадки:

Реалізація алгоритму

Оскільки коефіцієнти рівняння і його корені (в разі їх наявності) цілочисельні, то всі обчислення будемо проводити в цілих числах. Читаємо вхідні дані.

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))