Дано натуральное число п. Вычислить: 1*2 + 2*3*4 + … + n*(n + 1) *…*2n

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

Дано натуральное число п. Вычислить: 1*2 + 2*3*4 + … + n*(n + 1) *…*2n


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

Фактически требуется вычислить значение следующего выражения:
\displaystyle S=\sum_{i=1}^n\prod_{j=i}^{2i}j

В связи с ограниченной разрядностью представления целых чисел в традиционном Паскале, используется появившийся в PascalABC.Net 3.0 тип данных BigInteger, имеющий произвольную разрядность.

// PascalABC.NET 3.0, сборка 1144 от 16.01.2016
begin
  var n:=ReadInteger('n=');
  var s:BigInteger:=0;
  for var i:=1 to n do begin
    var sp:BigInteger:=1;
    for var j:=i to 2*i do sp*=j;
    s+=sp
    end;
  Writeln('S=',s)
end.

Тестовые решения:
n= 10
S=6867491336546

n= 20
S=6790094079076573854634585045346

n= 200
S=16259132945245603272459357532926431055851011262226423901521610672683053074122398284194138200811393508183584635163325580662485661758792994853918852068566553866936403927187322304685846233840511935657079269303199247681681900473643377764171469288217130928626467970695282872799909803648986880297649242631688825602025883316969148173917409343244672476380960595892701641078133125672741993996178795224513183779220724481183819428328185978629676722172834554113541584734035734977004732415721620206280485845346

(142k баллов)