Краткий ответ:
\[ x=\frac{s-k\cdot l}{r+1}, \]
где \(x\) — длина основного круга, \(r\) — число огневых рубежей, \(k\) — число промахов, \(l\) — длина штрафного круга, \(s\) — вся дистанция.
Почему так:
- Огневых рубежей \(r\), а основных кругов на 1 больше, значит основных кругов \(r+1\).
- Все основные круги дают расстояние \((r+1)x\).
- За \(k\) промахов спортсмен пробегает \(k\) штрафных кругов, то есть \(k\cdot l\).
- Вся дистанция: \[ s=(r+1)x+kl. \]
- Выражаем \(x\): \[ x=\frac{s-kl}{r+1}. \]
Проверка: если подставить найденный \(x\) обратно, получится
\[
(r+1)\cdot\frac{s-kl}{r+1}+kl=s.
\]
Пример: \(r=3,\ k=2,\ l=100,\ s=760\). Тогда
\[
x=\frac{760-2\cdot100}{3+1}=140.
\]
Проверка: \(4\cdot140+2\cdot100=760\).
Код на Python при порядке ввода \(r,k,l,s\):
import sys
r, k, l, s = map(int, sys.stdin.read().split())
print((s - k * l) // (r + 1))
То же на C++17:
#include <bits/stdc++.h>
using namespace std;
int main() {
long long r, k, l, s;
cin >> r >> k >> l >> s;
cout << (s - k * l) / (r + 1);
return 0;
}
Главная ловушка здесь — взять \(r\) основных кругов вместо \(r+1\).
