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

Помогите написать школьную програмку.

Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал длину пробега на 10% от предыдущего дня. Определить в какой день он пробежит 20 км, а в какой день суммарный пробег за все дни превысит 100км. Желательно в C++, заранее благодарю.
Твоя задача в гугле на каждом шагу.
RQ
Rustam Qoraboyev
85 371
Лучший ответ
Сумма геометрической прогрессии: s = a0+(pow(q, n)-1.0)/(q-1.0). В данном случае a0 == 10, q == 1.1

s = a0 * (pow(q, n) - 1.0) / (q - 1.0) => pow(q, n) = s * (q - 1.0) / a0 + 1.0 =>
n * log(q) = log(s * (q - 1.0) / a0 + 1.0) =>

n = log(s * (q - 1.0) / a0 + 1.0) / log(q)

Подставляешь a0, q, s, округляешь результат до целого числа дней.
Сергей Бабенко
Сергей Бабенко
50 438
Игорь Ништяков степень 1.1 не приращивает 10%
Бросай свою "Тюрягу", начинай учиться, а то так дурачком и останешься хД
Сергей Балабин
Сергей Балабин
51 227
Дмитрий Красноцветов 5 лет назад играл, когда в 7 классе был
логика примерно такая:

x=10;

day_number = 0;

// Начало цикла

while (x<=100)

{

day_number = day_number + 1;

x_next=x+(x*0.1) // тип double, бежит столько на каждый следующий день.

// Если 20 км - сказать какой день

if(x=20)

{

MessageBox.Show(x + "километров пробежал в " + day_number + " -й день. ");

}

if(x=100)

{

MessageBox.Show("Пробежал больше " + x + "километров в " + (day_number+1) + " -й день. ");

}

}

PS: писал с мобилы, не могу проверить на компе.
Игорь Ништяков Твой код вроде г0вно. Он работает только для 20 км. Если поставить больше, то он не сработает
#include
#include
using namespace std;
int main(int argc, char** argv) {
int day = 1;
float range = 10;
float sumrange = range;
int firstSolution = 0, secondSolution = 0;
while(true) {
range += range * 0.1;
sumrange += range;
++day;
if (range >= 20 && firstSolution == 0)
firstSolution = day;
if (sumrange >= 100 && secondSolution == 0)
secondSolution = day;
if (firstSolution != 0 && secondSolution != 0)
break;
}
std::cout << "20 километров лыжник пробежал за " << firstSolution << " дней" << std::endl;
std::cout << "100 километров лыжник пробежал за " << secondSolution << " дней" << std::endl;
return 0;
}
Сергей Безлюдов include cstdlib и iostream