# D - Floor Function



a, b, n = list(map(int, input().split()))



# max(floor(a * x / b) - a * floor(x / b) for 0 <= x <= n)

# x = k * b のとき, 第1項 == 第2項

# k * b <= x < (k+1) * b のとき, 第1項は単調増加, 第2項は一定



x = min(n, b - 1)

print((a * x // b - a * (x // b)))

# D - Floor Function



a, b, n = list(map(int, input().split()))



# max(floor(a * x / b) - a * floor(x / b) for 0 <= x <= n)

# x = k * b のとき, 第1項 == 第2項

# k * b <= x < (k+1) * b のとき, 第1項は単調増加, 第2項は一定



x = min(n, b - 1)

print((a * x // b))

# D - Floor Function
a, b, n = list(map(int, input().split()))
# max(floor(a * x / b) - a * floor(x / b) for 0 <= x <= n)
# x = k * b のとき, 第1項 == 第2項
# k * b <= x < (k+1) * b のとき, 第1項は単調増加, 第2項は一定
x = min(n, b - 1)
print((a * x // b - a * (x // b)))

# D - Floor Function
a, b, n = list(map(int, input().split()))
# max(floor(a * x / b) - a * floor(x / b) for 0 <= x <= n)
# x = k * b のとき, 第1項 == 第2項
# k * b <= x < (k+1) * b のとき, 第1項は単調増加, 第2項は一定
x = min(n, b - 1)
print((a * x // b))

-print((a * x // b - a * (x // b))) +print((a * x // b))