10784. Диагональ
Количество диагоналей у выпуклого
n - угольника не менее N. Чему равно минимально возможное значение n?
Вход.
Каждая входная стока содержит положительное целое число N (N £ 1015) – количество проведенных диагоналей. Значение N = 0
является концом входных данных и не обрабатывается.
Выход. Для каждого теста вывести его
номер и минимально возможное число n сторон многоугольника.
10
100
1000
0
Case 1: 7
Case 2: 16
Case 3: 47
математика + геометрия
Количество диагоналей выпуклого n
– угольника равно n * (n – 3) / 2. Если n * (n – 3)
/ 2 = N, то n находим из квадратного уравнения n2 – 3
* n – 2 * N = 0. Положительный корень уравнения равен
Остается округлить сверху вычисленное
значение. Поскольку N £ 1015, то вычисления
следует проводить, используя тип данных long long.
Пример
Рассмотрим второй тест. Для N =
100 получим
n = = 16
Читаем входные данные пока N >
0, вычисляем по формуле результат и выводим его с номером теста.
long long
n, res;
int cs = 1;
while(scanf("%lld",&n), n > 0)
{
res = int(ceil((3
+ sqrtl(9.0 + 8*n)) / 2));
printf("Case
%d: %lld\n",cs,res);
cs++;
}