Другие языки программирования и технологии
первый день спортсмен пробежал 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 округляем вверх до целого
Весь код программы:
Школьная формула суммы геометрической прогрессии: 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.
При чем тут паскаль? Задача чисто математическая..
Александр Лобанов
затем что нужно написать программу в паскаль
Математика тут и в самом деле не хитрая:
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 можно так в одну строчку:
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 км. Через сколько вот это дней и после чего? После первого дня забега через семь дней. А после дня накануне первого забега через восемь.Что паскаль? Говорить научись
Похожие вопросы
- Все ваши мысли за день составляют несколько килобайт. Если вы будете на протяжении 80 лет каждый день записывать по 10
- Вопрос по Си. if ((i++)==10) и i++ if (i==10) будет ли первый пример работать быстрее чем второй?
- C++. В операторе switch нельзя разве использовать case x? а x пробежать в цикле for?
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- Напишите пожалуйста числа от 10.11 до 109
- Перевести данное число из 10 системы в "двоичную"восьмеричную"шестнадцатеричную"
- Netbeans C++. Не понимаю, что и где не так. Первый раз установила эту программу и понятия не имею, как ей пользоваться
- Как вы думаете, мужчина, который сидит больше 10 часов в день за компом дает благоприятные результаты?)
- подскажите сайт, мне нужен бесплатный хостинг и домен, хотя бы на 10 дней
- как переводить из 16-ную в 10-чную из 10-чную в 16-чную систему счисления на ассемблере без калькулятора