program znanija_com_task_32583491;
var proizv:real;
i:integer;
function y(a:integer):real;
begin
y:=(2*a+7)/(3*a-2)
end; {function y}
begin
proizv:=y(6)*y(7);
for i:=7 to 18 do
begin
proizv:=proizv*y(i);
end; {for i}
write('proizvedenie mnozhestva znachenij funkcii y = ',proizv)
end.
{
Как я понял задание, во-первых, функция это дробь с числителем 2a+7, а знаменатель 3а-2. Если всё-таки дробный коэффициент перед вторым слагаемым это легко меняется в теле функции.
Также, мне кажется, что счетчик цикла 7..18 - это 1. То есть, только функция от натурального аргуента. В принципе тоже легко меняется уже в главной программе.
А дальше уже произведение рассчет самого главного: y(6) * y(7) * y(7) * y(8) * ... * y(16).
}
n, k, d2, d1, d0: integer;
e2, e1, e0: integer;
procedure GetDigits(m: integer; var d2, d1, d0: integer);
{Перевод числа [100..FFF]в 16-ю систему счисления}
begin
d0 := m mod 16;
m := m div 16;
d1 := m mod 16;
d2 := m div 16
end;
begin
n := 0;
{Рассматриваем шестнадцатиричные числа от 100 до 7FF}
for k := $100 to $7FF do
begin
GetDigits(k, d2, d1, d0);
if (d2 = 2) or (d1 = 2) or (d0 = 2) then
begin
GetDigits(2 * k, e2, e1, e0);
if d0 + d1 + d2 = e0 + e1 + e2 then n := n + 1
end
end;
writeln('n=', n)
end.
Тестовое решение:
n=23