0001. Окружность

Input file name: input.txt
Output file name: output.txt
Time limit: 2 s
Memory limit: 64 megabytes

Дана окружность с центром в точке (x0, y0) и радиусом R. Требуется найти точки её пересечения с осью OX (ось абсцисс).

Формат входного файла

В первой строке входного файла находятся 3 целых числа: x0, y0, R. Координаты центра по модулю не превосходят 1000, а радиус окружности √ натуральное число, тоже не превосходящее 1000.

Формат выходного файла

В первой строке выходного файла выведите число точек пересечения, далее выведите абсциссы этих точек в порядке возрастания. Числа выводите по одному в строке. Ответ считается правильным если отличается от эталонного не более чем на 10^(-6).

Пример:

input.txtoutput.txt
0 3 2 0
0 2 2 1 0
0 4 5 2 -3.0000000 3.000000

Примечание

Выводите числа, округляя до 6 знаков после запятой. В языке Паскаль это можно сделать следующим методом:

Writeln(f, x:0:6); {x - переменная, которую нужно вывести в файл f}
В языке С:
fprintf(f, "%0.6lf", x); 
// x ≈ переменная  типа double, которую нужно вывести в файл f;
В языке C++:
out.setf(ios::fixed | ios::showpoint);
out.precision(6); 
out << x;
// x - переменная, которую нужно вывести в файл out.


Source: Районная олимпиада РК по информатике, 2007.

Discuss       Submit a solution