А165и

 Ссылка на оригинальное решение

Задача:

Даны действительные числа $ a_1, a_2, \dots $. Известно, что $ a_1 > 0 $ и что среди $ a_2, a_3, \dots $ есть хотя бы одно отрицательное число. Пусть $ a_1, \dots , a_n $ — члены данной последовательности, предшествующие первому отрицательному члену ( $ n $  заранее неизвестно). Получить:

$ n + a_n $

 

Тесты:

Последовательность $ a_i $ $ n + a_n $
1 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 -6 24
2 2.7183 -0.0001 3.7183
3 1.23 2342 12349 12.434 9845 0.00002034 -3 6.00002034
4 1 2 3 4 5 6 7 8 9 10 -11 20

Решение:

Массив a — это заданная последовательность $ a_i $, n  — количество значений, предшествующих первому отрицательному числу, cur_num — текущее число во входном потоке.

Проэмулируем входной поток с помощью переменной  cur_pos . Пока значение в массиве на позиции  cur_pos  не стало отрицательным, запоминаем считанное число в переменной cur_num , увеличиваем счетчик n  на единицу и сдвигаем  cur_pos  на следующий элемент массива, т. е. считываем следующее число из входного потока. Как только во входном потоке появилось отрицательное значение, цикл прерывается,  при этом в  n записано количество чисел, предшествующих первому отрицательному числу, а в  cur_num  — последнее считанное неотрицательное число, которое находится на позиции $ n $.

Выводим ответ на задачу:  n + cur_num.

Код программы:

Ссылка на tryhaxe