Немного непонятно, но если сам пробовал, то разберешься
function p(k,n:integer):longin;
var i:integer;
begin
s:=1;
for i:=k to n do begin
if i mod 3<>0 then
s:=s*i;
endif;
p:=s;
end;
Если мы пронумеруем все числа, то на первом шагу останутся все числа с номерами 2к (к начинается с единицы), на втором 4к и т д. Значит, нам просто нужно узнать количество таких шагов. Всего чисел м-н. каждый раз мы удаляем половину. Значит, нужно посчитать логарифм от (м-н) по основанию 2. А ответом будет этот логарифм, округленный в меньшую строну (ну или в большую, там смотреть надо)
<em>// PascalABC.NET 3.3, сборка 1633 от 10.02.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var k:=0;
var n:=ReadReal;
while n<>0 do begin
k+=1; Read(n)
end;
Writeln(NewLine,k)
end.
<u>Пример</u>
12
-12.53
0.345325
1532
-234534
0
5