Другие языки программирования и технологии

первый день спортсмен пробежал 10 км

В первый день спортсмен пробежал 10 км. Каждый следующий день он пробегал на 7 % больше чем в предыдущий. Определить Через сколько дней суммарный пробег превысит 100 км ПАСКАЛЬ
Школьная геометрическая прогрессия: b = 10, q = 1.07
Школьная формула суммы геометрической прогрессии: S = b * ( q ** n - 1) / (q - 1)
Банальное школьное уравнение: 100 = 10 * (1.07 ** n - 1) / (1.07 - 1)
1.7 = 1.07 ** n
n = ln(1.7) / ln(1.07)
n округляем вверх до целого

Весь код программы:
 begin write(trunc(ln(1.7) / ln(1.07)) + 1) end. 
ЛС
Леонид Семёнов
65 076
Лучший ответ
При чем тут паскаль? Задача чисто математическая..
Александр Лобанов затем что нужно написать программу в паскаль
Математика тут и в самом деле не хитрая:
10•(1,07ⁿ - 1)/(1,07-1) > 100
1,07ⁿ - 1 > 100•0,07/10
1,07ⁿ > 1,7
n > ㏑1,7/㏑1,07=7.842726141175185
Ответ: n=8.
На FreePascal-e можно так в одну строчку:
 uses math; begin writeln(ceil(ln(1.7)/ln(1.07))) end. 
Это действительно самый компактный вариант, но это не значит, что он обязательно самый быстрый. С циклом repeat-until можно так:
 var km, s: real; n: integer;  
begin km := 10.0; s := 0.0; n := 0;
repeat s := s + km; km := km * 1.07;
n := n + 1 until s > 100; writeln(n) end.
А с циклом for так:
 var km, s: real; n: integer; begin km := 10.0; s := 0.0; 
for n:=1 to 1000 do begin s := s + km; km := km * 1.07;
if s > 100 then break end; writeln(n) end.
Какой Вам больше нравится - такой вариант и выбирайте. Да проверьте ещё - действительно ли отношение двух натуральных логарифмов, которые как раз компьютер циклами и вычисляет, быстрее вычисляется нежели простенький цикл из нескольких шагов с однотипным умножением. А ответ во всех программах один: в 8-ой день совокупный пробег превысит 100 км. Через сколько вот это дней и после чего? После первого дня забега через семь дней. А после дня накануне первого забега через восемь.
Elman Huseynov
Elman Huseynov
66 572
Что паскаль? Говорить научись
В П
В П
6 773

Похожие вопросы