Начав тренировки, лыжник в первый день пробежал d км. Каждый следующий день он увеличивал длину пробега на 10% от пробега предыдущего дня. Определить, в какой день суммарный пробег за все дни превысит s км. С++
"Каждый следующий день он увеличивал длину пробега на 10% от пробега предыдущего дня" означает, что на второй день пробежал s2 = d + d * 0.1 = d * 1.1, на третий s3 = d * 1.1^2. Таким образом можем составить формулу длины пробега в любой n-й день sn = d * 1.1^(n-1). Суммарный пробег с 1 по n-й день можно вычислить как сумму геометрической прогрессии fn = s1 + s2 + ... + sn = d * (1 + 1.1 + ... + 1.1^(n-1)) = d * (1.1^n - 1) / (1.1 - 1) = 10d(1.1^n - 1). Осталось ответить на вопрос "в какой день суммарный пробег за все дни превысит s км":
fn > s
10d(1.1^n - 1) > s
1.1^n > 1 + 0.1 * s / d
n > log(1 + 0.1 * s / d) / log(1.1)
Число n действительное, а нам нужен точный день когда превысит, поэтому возьмём целую часть и прибавим день:
"Каждый следующий день он увеличивал длину пробега на 10% от пробега предыдущего дня" означает, что на второй день пробежал s2 = d + d * 0.1 = d * 1.1, на третий s3 = d * 1.1^2. Таким образом можем составить формулу длины пробега в любой n-й день sn = d * 1.1^(n-1). Суммарный пробег с 1 по n-й день можно вычислить как сумму геометрической прогрессии fn = s1 + s2 + ... + sn = d * (1 + 1.1 + ... + 1.1^(n-1)) = d * (1.1^n - 1) / (1.1 - 1) = 10d(1.1^n - 1). Осталось ответить на вопрос "в какой день суммарный пробег за все дни превысит s км":
fn > s
10d(1.1^n - 1) > s
1.1^n > 1 + 0.1 * s / d
n > log(1 + 0.1 * s / d) / log(1.1)
Число n действительное, а нам нужен точный день когда превысит, поэтому возьмём целую часть и прибавим день:
N = 1 + floor[ log(1 + 0.1 * s / d) / log(1.1) ]