def solve_equation(a,b): # x - a(x div b) = b
if a%1 + b%1 != 0:
raise ValueError('both variables must have integer values')
if 0 < a < b: x = a + b
else: x = None
return x
В том смысле, что для любых a < b ответ: a + b. Для всех прочих - решение отсутствует. P
делится без остатка на (F - P)
function f(F, P) {
const D = F - P; // стоимость напитка без посуды
// сколько останется денег если 1 раз купить, выпить и сдать?
function drink(m) {
const n = Math.floor(m / F);
if (n <= 0) throw "Nope";
return m - n * D;
}
for( let M = P + D * Math.ceil((F + 1) / D); M <= D * Math.floor(2 * 109 / D); M += D) {
try {
if (F === drink(drink(drink(drink(M))))) return M;
} catch(e) {
continue;
}
}
}
f(7, 3) // 83
import math
F,P = map(int, input("Введите два целых через пробел:").split())
def bruteforce(F, P):
D = F - P
def drink(m):
n = math.floor(m / F)
if 0 == n:
raise Exception()
return m - n * D
for M in range(P, int(1e9), D):
try:
rem = drink(drink(drink(drink(M))))
if (F == rem):
return M
except Exception as E:
pass
return "Нет решения"
print(bruteforce(F, P))