Var
a, b: integer;
begin
a := 1;
b := 0;
while a < 500 do
begin
a := a * 2;
b := b + a;
end;
writeln(b);
end.
Школы
Как решить задачу? (БЕЗ РУЧНОГО СЧЕТА, то есть чтобы не приходилось 500 позиций писать)
Вася Иванов, с точки зрения алгебры Вам представлен алгоритм вычисления суммы членов геометрической прогрессии.
Можно было бы подумать, что проще эту сумму вычислить по формуле, нежели гонять циклический процесс. Однако, в данной задаче число n — количество членов в сумме прогрессии — как раз и не задано! Вместо этого задано неравенство наибольшего из членов прогрессии.
В таком случае сначала решается неравенство, из которого находится число n. Остаётся подставить все известные данные в формулу суммы и вычислить эту сумму.
••• ЗАМЕЧАНИЕ! Обозначения переменных в программе не совпадают с обозначениями в приведённых ниже формулах!!!
В программе:
a — каждый член геометрической прогрессии,
b — искомая сумма членов прогрессии.
✓ Начальный член прогрессии равен 1, но он не используется в сумме, поэтому примем первым членом тот, который первым используется в сумме, то есть 2. a₁ = 2
Множитель q равен 2. Таким образом aₙ = 2ⁿ
Подзадача 1. Из кода программы видно, что выход из цикла произойдёт, только когда нарушится условие цикла. То есть aₙ ≥ 500. Также очевидно, что именно это значение aₙ будет вычислено внутри цикла и прибавлено к частичной сумме. Значит, оно тоже является частью суммы.
aₙ ≥ 500 => 2ⁿ ≥ 500
Поскольку n положительное, получаем, что n ≥ log₂500
Замечаем, что при n = 8 2ⁿ = 256 < 500, цикл продолжится; при n = 9 2ⁿ = 512 > 500, и цикл завершится.
Следовательно, n = 9, а aₙ = 512.
Подзадача 2. Подставляем данные в формулу суммы геометрической прогрессии, получаем: в знаменателе 2 – 1 = 1, в числителе 2¹⁰ – 2 = 1024 – 2 = 1022. 1022 / 1 = 1022.
Это и есть искомая сумма членов геометрической прогрессии!

Можно было бы подумать, что проще эту сумму вычислить по формуле, нежели гонять циклический процесс. Однако, в данной задаче число n — количество членов в сумме прогрессии — как раз и не задано! Вместо этого задано неравенство наибольшего из членов прогрессии.
В таком случае сначала решается неравенство, из которого находится число n. Остаётся подставить все известные данные в формулу суммы и вычислить эту сумму.
••• ЗАМЕЧАНИЕ! Обозначения переменных в программе не совпадают с обозначениями в приведённых ниже формулах!!!
В программе:
a — каждый член геометрической прогрессии,
b — искомая сумма членов прогрессии.
✓ Начальный член прогрессии равен 1, но он не используется в сумме, поэтому примем первым членом тот, который первым используется в сумме, то есть 2. a₁ = 2
Множитель q равен 2. Таким образом aₙ = 2ⁿ
Подзадача 1. Из кода программы видно, что выход из цикла произойдёт, только когда нарушится условие цикла. То есть aₙ ≥ 500. Также очевидно, что именно это значение aₙ будет вычислено внутри цикла и прибавлено к частичной сумме. Значит, оно тоже является частью суммы.
aₙ ≥ 500 => 2ⁿ ≥ 500
Поскольку n положительное, получаем, что n ≥ log₂500
Замечаем, что при n = 8 2ⁿ = 256 < 500, цикл продолжится; при n = 9 2ⁿ = 512 > 500, и цикл завершится.
Следовательно, n = 9, а aₙ = 512.
Подзадача 2. Подставляем данные в формулу суммы геометрической прогрессии, получаем: в знаменателе 2 – 1 = 1, в числителе 2¹⁰ – 2 = 1024 – 2 = 1022. 1022 / 1 = 1022.
Это и есть искомая сумма членов геометрической прогрессии!


b=2+4+8+16+...+512=2^1+2^2+2^3+2^4+...+2^9=2^10-2=1022
Степень двойки меньше 500 это седьмая (128). Алгоритм складывает степени двойки от 1 до 128
Елена Борисова
Увы
дайте задачу саму, а то паскаль не знаю
Похожие вопросы
- Помогите решить задачи по гометрии из билетов! Пожалуйста !
- Как решить задачу по математике за пятый класс
- Если ученик решил задачу другим способом то могут снизить оценку за это?
- Помогите решить задачу по математике 4 класс.
- КТО РЕШИТ ЗАДАЧУ тому медаль нах отдать!
- решить задачу помогите по геометрии
- Помогите решить задачу Шерлока Холмса.
- Помогите решить задачу, срочно! Обьясните как решить
- Помогите решить задачу для 5го класса
- пожалуйста помогите решить задачи очень надо!!!
Если Вы захотите трассировать программу, то Вам понадобятся всего лишь 9 позиций.
вход в цикл→2→4→8→16→32→64→128→256→512→выход из цикла