Вычислить сумму 1+2+3... Складывать до тех пор пока сумма не станет больше 1000. Вывести...

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

Вычислить сумму 1+2+3... Складывать до тех пор пока сумма не станет больше 1000. Вывести сумму и последнее прибавленное число
Напишите математическую модель, схему и программный код.


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

1. Строим математическую модель

1+2+3+... - это арифметическая прогрессия с разностью d, равной единице и первым членом a₁=1.
Сумма n первых членов арифметической прогрессии может быть найдена по формуле S=(2a₁+d(n-1))*n/2.
В нашем случае формула упрощается: S = (2+1(n-1))n/2 = n(n+1)/2
По условию члены прогрессии суммируются, пока сумма не превысит 1000.
Тогда 0.5n(n+1)>1000
n(n+1)>2000; n²+n-2000>0
Найдем минимальное n, удовлетворяющее этому условию.
n²+n+2000=0; D=1+8000=8001; √D ≈ 89.4
n₁=0.5(-1-89.4) < 0 - не устраивает, поскольку n>1
n₂=0.5(-1+89.4) =44.2
Принимаем n=45.
Сумма составит 45(45+1)/2=1035, а последний член равен n, т.е .45

Непонятно, зачем нам составлять программу. Пусть для того, чтобы проверить наше решение, поэтому выберем другой алгоритм.
Будем последовательно наращивать сумму 1+2+3+4 до превышения ей значения 1000. Решение, что называется, "в лоб".

2. Блок-схема приведена во вложении.

3. Программа

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

begin
  var (s,i):=(0,1);
  while true do begin
    s+=i;
    if s>1000 then begin
      Writeln('S=',s,', последний член ',i);
      exit
      end;
    i+=1
    end
end.

Результат
S=1035, последний член 45


image
(142k баллов)