В первый день спортсмен пробежал \(x\) километров, а затем он каждый день увеличивал пробег на 70% от предыдущего значения. По данному числу \(y\) определите номер дня, на который пробег спортсмена составит не менее \(y\) километров. Входные данные:
На вход программа получает два действительных числа \(x\) и \(y\) . Числа положительные, действительные, не превосходят 1000, заданы с точностью до шести знаков после запятой.
Выходные данные:
Программа должна вывести единственное целое число.
В питоне
В этой задаче нельзя использовать цикл while
\[a_n = a_1 \cdot q^{(n-1)}\]
Где:
\(a_n\) - n-ый член прогрессии.
\(a_1\) - первый член прогрессии (начальный пробег спортсмена).
\(q\) - знаменатель прогрессии (1 + 70%).
Нам дано значение пробега \(y\) и требуется определить номер дня, когда пробег спортсмена станет больше или равен \(y\). То есть, мы должны найти наименьшее целое значение \(n\), для которого \(a_n \geq y\).
Для этого, мы можем переписать уравнение в следующем виде:
\[y \leq a_1 \cdot q^{(n-1)}\]
Для того чтобы избавиться от степени в уравнении, можно применить логарифм по основанию \(q\) ко всему выражению:
\[\log_q(y) \leq \log_q(a_1 \cdot q^{(n-1)})\]
Теперь, мы можем использовать свойства логарифмов, чтобы преобразовать уравнение:
\[\log_q(y) \leq \log_q(a_1) + \log_q(q^{(n-1)})\]
Учитывая, что \(\log_q(q^{(n-1)})\) равно \(n-1\), мы можем переписать уравнение как:
\[\log_q(y) \leq \log_q(a_1) + (n-1)\]
Теперь мы можем выразить \(n\):
\[n \geq \frac{{\log_q(y) - \log_q(a_1)}}{1}\]
Так как в задаче запрещено использование цикла while, нам необходимо использовать библиотеку math и функцию ceil (округление в большую сторону) для вычисления результата.
Вот как будет выглядеть решение задачи на языке Python:
```python
import math
def find_day(x, y):
q = 1.7 # 1 + 70% в виде десятичной дроби (1 + 70% = 1 + 0.7 = 1.7)
n = math.ceil((math.log(y) - math.log(x)) / math.log(q)) + 1
return n
x = float(input("Введите начальный пробег спортсмена: "))
y = float(input("Введите желаемый пробег спортсмена: "))
result = find_day(x, y)
print("Номер дня: {}".format(result))
```
Давайте разберем этот код по шагам:
1. Импортируем модуль math, который дает нам доступ к функциям математических операций, включая логарифмы.
2. Создаем функцию find_day, которая принимает два аргумента x и y.
3. Внутри функции, мы определяем переменную q, которая равна 1 + 70% в виде десятичной дроби (1 + 70% = 1 + 0.7 = 1.7).
4. Затем мы используем формулу для вычисления значения n.
5. Мы округляем результат до ближайшего целого числа в большую сторону с помощью функции math.ceil.
6. Возвращаем полученное значение n.
7. Считываем значения x и y с помощью функции input.
8. Вызываем функцию find_day, передавая ей введенные значения x и y.
9. Наконец, выводим результат на экран с помощью функции print.
Это решение позволяет определить номер дня, на который пробег спортсмена составит не менее заданного значения y.