Помогите, пожалуйста, решить задачу по программированию на с++
Группа альпинистов пытается покорить вершину горы. Каждый день они поднимаются вверх на определённое расстояние, но ночью из-за сложных условий (лавины, камнепады) их лагерь сползает вниз.
Ваша задача — создать программу, которая:
Запрашивает у пользователя:
Общее расстояние до вершины (S, в метрах).
Расстояние, которое группа проходит за день (D, в метрах).
Расстояние, на которое группа сползает за ночь (N, в метрах).
Рассчитывает, на какой день группа достигнет вершины.
Формат ввода
Программа запрашивает три натуральных числа: S, D, N.
Формат вывода
Программа должна вывести одно натуральное число — номер дня, на который группа достигнет вершины в формате:
Группа достигнет вершины на [число] день.
Пример 1
Ввод:
10
3
2
Вывод: Группа достигнет вершины на 8 день.
Пример 2
Ввод
87
17
5
Вывод:Группа достигнет вершины на 7 день.
Примечания
Гарантируется, что:
D > N (группа каждый день продвигается вперёд).
D < S (группа не может достичь вершины за один день).
РЕШЕНИЕ БЕЗ ЦИКЛОВ ФУНКЦИЙ И ТД!!!! ТОЛЬКО С ПОМОЩЬЮ ЦЕЛОЧИСЛЕННОЙ АРИФМЕТИКИ. как я поняла, нужно составить рекуррентную формулу просто
никакие библиотеки, кроме iostream - не подключать
#include <iostream>
using namespace std;
int main() {
int s, d, n, r = 0, m = 0;
cin >> s >> d >> n;
while (true) {
r += d;
++m;
if (s <= r) break;
r -= n;
}
cout << m << '\n';
}
Вот решение задачи на C++ с использованием только целочисленной арифметики, без циклов, функций и других сложных конструкций, только с помощью математических вычислений:
```cpp
#include <iostream>
int main() {
int S, D, N;
std::cin >> S >> D >> N;
// Рассчитываем количество полных дней (когда группа поднимается и спускается)
int days = (S - D) / (D - N) + 1;
// Проверяем, нужно ли добавить дополнительный день
if ((S - D) % (D - N) != 0) {
days += 1;
}
std::cout << "Группа достигнет вершины на " << days << " день." << std::endl;
return 0;
}
```
Объяснение решения:
1. Каждый день группа продвигается вперед на (D - N) метров (поднимается на D, но спускается на N).
2. В последний день группа достигнет вершины без спуска ночью.
3. Поэтому сначала вычисляем расстояние без последнего дня: S - D
4. Затем делим это расстояние на ежедневный прогресс (D - N)
5. Добавляем 1 день (последний день, когда группа достигнет вершины)
6. Если есть остаток от деления, добавляем еще один день
Пример работы:
Для ввода 10 3 2:
(10 - 3) / (3 - 2) + 1 = 7 / 1 + 1 = 8 дней
Для ввода 87 17 5:
(87 - 17) / (17 - 5) + 1 = 70 / 12 + 1 = 5 + 1 = 6
Так как 70 % 12 = 10 ≠ 0, добавляем еще 1 день, итого 7 дней