Помогите пожалуйста написать программу Pascal !

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

Помогите пожалуйста написать программу Pascal !


image

Информатика (43 баллов) | 27 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Сделаем небольшие преобразования.
\displaystyle S=1+ \frac{1}{3}+ \frac{1}{3^2}+...+ \frac{1}{3^8}= \frac{3^8+3^7+3^6+...+1}{3^8}= \\ \\ \frac{1}{3^8}\sum_{i=0}^83^i ; \qquad \sum_{i=0}^83^i =1+3+3\cdot3+3\cdot3\cdot3+...; \\ \\ a_0=1; \quad a_1=3\cdot a_0; \quad a_2=3\cdot a_1\quad ...\quad a_8=3\cdot a_7 \\ \\ 
S= \frac{1}{a_8}\left(a_0+\sum_{i=1}^8 a_i \right), \quad a_i=3\cdot a_{i-1}, \,a_0=1
Теперь можно писать программу. Проведенное преобразование позволяет вычислить S абсолютно точно в виде простой дроби. В ответе можно дать десятичную дробь, но преобразование к ней будет единственной неточной операцией. Кроме того, скорость выполнения целочисленной арифметики многократно превышает скорость работы в арифметике с плавающей точкой.

var
  i,s,a:integer;
 
begin
  a:=1; s:=a;
  for i:=1 to 8 do begin
    a:=3*a; s:=s+a
    end;
  Writeln('S = ',s,'/',a,' = ',s/a) 
end.

Результат
S = 9841/6561 = 1.49992379210486

(150k баллов)
0 голосов

Var i: integer;
    s,p: real;
begin
  s:=1; p:=1;
  for i:=1 to 8 do 
  begin
    p:=p*3;  
    s:=s+1/p;
  end;
  writeln('сумма: ',s:7:5);
end.

сумма: 1.49992

(9.7k баллов)