Условие
Составить программу для решения квадратного уравнения [latex]ax^2 + bx + c = 0[/latex] [latex](a\neq0)[/latex].
Входные данные
В одной строке задано три целых числа — коэффициенты квадратного уравнения соответственно [latex]a[/latex], [latex]b[/latex] и [latex]c[/latex]. Значения коэффициентов не превышают по модулю [latex]100[/latex].
Выходные данные
В одной строке вывести в случае отсутствия корней сообщение «No roots» (без кавычек), в случае, если решение содержит один корень вывести сначала сообщение «One root:» (без кавычек), а далее через пробел сам корень, в случае наличия двух корней вывести сначала сообщение «Two roots:» (без кавычек), а далее через пробел сначала меньший, а потом больший корень. Гарантируется, что в случае наличия решений все корни целочисленные.
Задача взята с сайта e-olymp.
Тесты
Входные данные | Выходные данные |
1 -5 6 | Two roots: 2 3 |
1 10 25 | One root: -5 |
1 2 3 | No roots |
2 6 7 | No roots |
1 -2 1 | One root: 1 |
2 -9 4 | Two roots: 0 4 |
3 10 -8 | Two roots: -4 0 |
1 6 9 | One root: -3 |
3 -7 10 | No roots |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> #include <math.h> using namespace std; int main () { int a,b,c; double d; cin >> a >> b >> c; d=(b*b)-(4*a*c); if (d>0){ int x1,x2; x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); cout << "Two roots: " << ((x1>x2)? x2: x1) << " " << ((x1>x2)? x1: x2); } else if (d==0){ cout << "One root:" << " " << -b/(2*a) << endl; } else cout << "No roots" << endl; return 0; } |
Решение
Каждый в школе в классе 7 узнает как решать квадратное уравнение. Для того чтобы его решить надо сначала найти дискриминант: [latex]d=(b\cdot b)-(4\cdot a\cdot c)[/latex], а потом подставить его в следующие формулы для нахождения корней квадратного уравнения: [latex]x1=(-b+\sqrt d)/(2\cdot a)[/latex] и [latex]x2=(-b-\sqrt d)/(2\cdot a)[/latex]. Однако для квадратного уравнения существует 3 варианта ответов зависящие от дискриминанта. Все 3 варианта расписаны в if-блоках, где сначала проверяется дискриминант и от его значения уже определяется сколько корней у нас будет. После этого выводятся корни, гарантированно целочисленные, или надпись «No roots», если их нет.
Код программы
Засчитанное решение