Краткий ответ: минимальный начальный заряд равен
\[ \max\bigl(a,\; k\cdot a-(k-1)\cdot b\bigr). \]
Иными словами:
- если \(a\ge b\), то ответ \(ka-(k-1)b\);
- если \(a<b\), то достаточно заряда \(a\).
Почему так
После \(i\) перегонов и зарядок в первых \(i-1\) домах заряд робота равен
\[ x-i\cdot a+(i-1)\cdot b, \]
где \(x\) — начальный заряд. Чтобы доехать до \(i\)-го дома, нужно:
\[ x-i\cdot a+(i-1)\cdot b\ge 0. \]
Отсюда
\[ x\ge i\cdot a-(i-1)\cdot b. \]
Это выражение линейно зависит от \(i\), поэтому максимум достигается на одном из концов: при \(i=1\) или при \(i=k\). При \(i=1\) получаем \(a\), при \(i=k\) — \(ka-(k-1)b\).
Проверка примера
Если \(a=2,\ b=1,\ k=5\), то
\[ \max(2,\ 5\cdot2-4\cdot1)=\max(2,6)=6. \]
Программа на Python 3
import sys
def main():
data = sys.stdin.read().split()
a = int(data[0])
b = int(data[1])
k = int(data[2])
ans = max(a, k * a - (k - 1) * b)
print(ans)
if __name__ == "__main__":
main()
Сложность решения — \(O(1)\), память — \(O(1)\).