(Время: 1 сек. Память: 16 Мб Сложность: 17%)
Вася в школе изучил квадратные уравнения и понял, как они легко решаются путем вычисления дискриминанта. Но Петя поведал ему о методе решения кубических уравнений вида A*X^3 + B*X^2 + C*X + D = 0. На факультативе по математике Васе задали решить около ста уравнений как раз такого вида. Но, к сожалению, Вася забыл формулы, о которых рассказывал ему Петя. Но Васе было известно, что все корни уравнений – целые числа и находятся на отрезке [-100, 100]. Поэтому у Васи есть шанс найти их методом перебора, но для этого ему придется затратить уйму времени, т.к. возможно необходимо будет осуществить перебор нескольких тысяч значений. Помогите Васе написать программу, которая поможет ему найти корни кубических уравнений!Входные данные
В единственной строке входного файла INPUT.TXT записаны 4 числа: A, B, C и D – целые коэффициенты кубического уравнения. Каждый коэффициент по модулю меньше 32768.
Выходные данныеВ единственную строку выходного файла OUTPUT.TXT нужно вывести через пробел в порядке возрастания все корни заданного кубического уравнения. Кратные корни следует выводить только один раз.
Примеры
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
1 -3 0 0
|
0 3
|
2
|
3 -15 18 0
|
0 2 3
|
3
|
1 -7 -33 135
|
-5 3 9
|
Решение:
var
a,b,c,d,x,i:int64;
f,f1:text;
begin
assign(f,'input.txt');
reset(f);
assign(f1,'output.txt');
rewrite(f1);
readln(f,a,b,c,d);
for i:=-100 to 100 do
begin
x:=a*i*i*i+b*i*i+c*i+d;
if (x=0) then write(f1,i,' ');
end;
close(f1);
a,b,c,d,x,i:int64;
f,f1:text;
begin
assign(f,'input.txt');
reset(f);
assign(f1,'output.txt');
rewrite(f1);
readln(f,a,b,c,d);
for i:=-100 to 100 do
begin
x:=a*i*i*i+b*i*i+c*i+d;
if (x=0) then write(f1,i,' ');
end;
close(f1);
end.
Комментариев нет:
Отправить комментарий