Пожалуйста помогите составить в Паскале програмку ) пожалуйста очень

0 голосов
47 просмотров

Пожалуйста помогите составить в Паскале програмку ) пожалуйста очень


image

Информатика (36 баллов) | 47 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Для оптимизации вычислений в подобных случаях нужно составить рекуррентную формулу.
\displaystyle P=\prod_{i=1}^n\left(2^i+\frac{1+2+...+i}{i!}\right)=\prod_{i=1}^n\left(a_i+ \frac{b_i}{c_i\right)} =p_1\cdot p_2\cdot ...\cdot p_i; \\ \\ 
a_i=2^i=2a_{i-1}, \quad a_1=2 \\ 
b_i=1+2+...+i=b_{i-1}+i, \quad b_1=1 \\ 
c_i=1\cdot2\cdot ... \cdot i=c_{i-1}\cdot i, \quad c_1=1 \\ \\
p_i=a_i+ \frac{b_i}{c_i}=2*a_{i-1}+ \frac{b_{i-1}+i}{c_{i-1}\cdot i}

// PascalABC.NET 3.3.5, сборка 1636 от 10.03.2018
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('n=');
  var (a,b,c,p):=(1.0,0.0,1.0,1.0);
  for var i:=1 to n do begin
    a*=2;
    b+=i;
    c*=i;
    p*=a+b/c;
    end;
  Writeln('П=',p)
end.

Пример
n= 10
П=8.61534647497717E+16

Во вложении показан контрольный пример, выполненный в пакете компьютерной алгебры Maple 15. Результаты полностью совпадают.


image
(150k баллов)