def wine(x, y, m, n):
"""
:param x: 总钱
:param y: 酒单价
:param m: 换酒的空瓶数
:param n: 换酒的瓶盖数
:return: 到的瓶数,可兑换到的瓶数,向商家赊酒的次数,总共获得的瓶数
"""
num = int(x//y)
count = 0
lend = 0
num_1 = num
num_2 = num
while True:
a = num_1 // m
a_1 = num_1 % m
b = num_2 // n
b_1 = num_2 % n
value1 = (a == 0 and b == 0)
value2 = (a_1 == m - 1 or b_1 == n - 1)
value3 = (a_1 == m - 1 and b_1 == n - 1)
if value1 and (a_1 != m - 1 and b_1 != n - 1):
print("此时不能再兑换!\n")
break
count = count + (a + b)
print(f"{num_1} / {m} = {a} ... {a_1}\t\t{num_2} / {n} = {b} ... {b_1}")
print(f"瓶兑换 {a} 瓶酒,剩 {a_1} 瓶\t盖兑换 {b} 瓶酒,剩 {b_1} 盖\t此轮共兑换 {a + b} 瓶酒\n")
num_1 = (a + b) + a_1
num_2 = (a + b) + b_1
if value1 and (value2 or value3):
lend += 1
print("*" * 70)
print(f"此时向商家赊 1 瓶酒,原剩 {a_1}瓶,{b_1}盖,则共有 {a_1 + 1}瓶\t{b_1 + 1}盖")
a = (num_1 + 1) // m
a_1 = (num_1 + 1) % m
b = (num_2 + 1) // n
b_1 = (num_2 + 1) % n
wine_num = a + b
print(f"{num_1 + 1} / {m} = {a} ... {a_1}\t\t{num_2 + 1} / {n} = {b} ... {b_1}")
print(f"瓶兑换 {a} 瓶酒,剩 {a_1} 瓶\t盖兑换 {b} 瓶酒,剩 {b_1} 盖\t此轮共兑换 {wine_num} 瓶酒")
count = count + wine_num
wine_num = wine_num - 1
num_1 = wine_num + a_1
num_2 = wine_num + b_1
print(f"总酒数要减 1,抵消向商家赊的酒,故此轮可获得 {wine_num} 瓶酒,即剩 {num_1} 瓶\t{num_2} 盖")
print("*" * 70)
print(f"总钱可以买:{num} 瓶酒\n瓶和盖一共可以兑换:{count} 瓶酒,其中向商家赊了 {lend} 次酒\n总共可以获得:{num + count} 瓶")
return num, count, lend, num+count
x = eval(input("请输入总钱:"))
y = eval(input("请输入酒的单价:"))
m = int(input("请输入兑换一瓶酒所需的瓶数:"))
n = int(input("请输入兑换一瓶酒所需的盖数:"))
wine(x, y, m, n)