Форум программистов, компьютерный форум, киберфорум
alhaos
Войти
Регистрация
Восстановить пароль
Оценить эту запись

ЗАДАЧА №10 Уравнение

Запись от alhaos размещена 20.10.2020 в 08:31

Красноярский краевой Дворец пионеров, (c)2006 - 2020

Вася в школе изучил квадратные уравнения и понял, как они легко решаются путем вычисления дискриминанта. Но Петя поведал ему о методе решения кубических уравнений вида A*X3 + B*X2 + C*X + D = 0. На факультативе по математике Васе задали решить около ста уравнений как раз такого вида. Но, к сожалению, Вася забыл формулы, о которых рассказывал ему Петя. Но Васе было известно, что все корни уравнений – целые числа и находятся на отрезке [-100, 100]. Поэтому у Васи есть шанс найти их методом перебора, но для этого ему придется затратить уйму времени, т.к. возможно необходимо будет осуществить перебор нескольких тысяч значений. Помогите Васе написать программу, которая поможет ему найти корни кубических уравнений!

Входные данные
В единственной строке входного файла INPUT.TXT записаны 4 числа: A, B, C и D – целые коэффициенты кубического уравнения. Каждый коэффициент по модулю меньше 32768, A ≠ 0.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести через пробел в порядке возрастания все корни заданного кубического уравнения. Кратные корни следует выводить только один раз.

PowerShell
1
2
3
4
5
6
7
8
9
10
class problem_010 {
    static solve ([String]$inputFileName, [string]$outputFileName){
        $x3, $x2, $x, $c = [int[]]((GC C:\PROBLEMS\010\INPUT.TXT) -split "[^\d-]+")
        (-100..100 | ? {
            (([math]::Pow($_, 3) * $x3 + [math]::Pow($_, 2) * $x2 + $_ * $x + $c ) -eq 0)
        }) -join " " | Out-File $outputFileName
    }
}
 
[problem_010]::solve('C:\PROBLEMS\010\INPUT.TXT', 'C:\PROBLEMS\010\OUTPUT.TXT')
Размещено в Без категории
Просмотров 468 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.