Решение
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.BufferedWriter
import java.io.OutputStreamWriter
import kotlin.math.sqrt
fun solveQuadratic(a: Double, b: Double, c: Double): Pair<Int, List<Double>> {
val d = b * b - 4 * a * c
// Если дискриминант отрицательный, корней нет
if (d < 0) return 0 to emptyList()
// Вычисляем корни
val sqrtD = sqrt(d)
val x1 = (-b + sqrtD) / (2 * a)
val x2 = (-b - sqrtD) / (2 * a)
// Если корни равны, возвращаем один корень
if (d == 0.0) return 1 to listOf(x1)
// Возвращаем два корня в порядке возрастания
return 2 to listOf(minOf(x1, x2), maxOf(x1, x2))
}
fun main(args: Array<String>) {
val reader = BufferedReader(InputStreamReader(System.`in`))
val writer = BufferedWriter(OutputStreamWriter(System.out))
// Читаем строку ввода и проверяем на null
val input = reader.readLine()
if (input.isNullOrBlank()) {
writer.write("0") // Если строка пустая или null, считаем, что корней нет
writer.newLine()
reader.close()
writer.close()
return
}
// Разделяем строку на коэффициенты и преобразуем в Double
val (a, b, c) = input.trim().split(" ").map { it.toDouble() }
// Решаем уравнение
val (count, roots) = solveQuadratic(a, b, c)
// Выводим количество корней
writer.write("$count")
writer.newLine()
// Выводим корни с точностью до 6 знаков после запятой
if (count > 0) {
writer.write(roots.joinToString(" ") { String.format("%.6f", it) })
}
writer.newLine()
reader.close()
writer.close()
}