Hầu hết các ứng dụng máy tính tiền tip chỉ đơn giản là chiếm một tỷ lệ cố định trong giá bữa ăn. Vì vậy, ví dụ, nếu bữa ăn của bạn là 23,45 đô la, bạn có thể để lại 15% tiền tip = 3,52 đô la, hoặc một khoản tiền 20% hào phóng hơn = 4,69 đô la.
Đủ tiện lợi cho người dùng thẻ tín dụng. Nhưng không phải như vậy nếu bạn muốn để lại lời khuyên về tiền mặt, trong trường hợp đó, số tiền lẻ này sẽ gây cản trở. Vì vậy, hãy sửa đổi ý tưởng để thuận tiện hơn cho người dùng tiền mặt.
Nhiệm vụ của bạn
Viết, càng ít byte càng tốt, một chương trình hoặc hàm lấy làm đầu vào:
- Giá của bữa ăn
- Tỷ lệ phần trăm tối thiểu
- Tỷ lệ phần trăm tối đa
Và xuất bất kỳ số tiền tip nào trong phạm vi [price * min_percentage / 100, price * max_percentage / 100] để giảm thiểu số lượng hóa đơn / tiền giấy và tiền xu cần thiết.
Giả sử các mệnh giá tiền tệ của Mỹ là 1, 5 ¢, 10 ¢, 25, $ 1, $ 5, $ 10, $ 20, $ 50 và $ 100.
Thí dụ
Đây là một chương trình ví dụ không chơi gôn trong Python:
import math
import sys
# Do the math in cents so we can use integer arithmetic
DENOMINATIONS = [10000, 5000, 2000, 1000, 500, 100, 25, 10, 5, 1]
def count_bills_and_coins(amount_cents):
# Use the Greedy method, which works on this set of denominations.
result = 0
for denomination in DENOMINATIONS:
num_coins, amount_cents = divmod(amount_cents, denomination)
result += num_coins
return result
def optimize_tip(meal_price, min_tip_percent, max_tip_percent):
min_tip_cents = int(math.ceil(meal_price * min_tip_percent))
max_tip_cents = int(math.floor(meal_price * max_tip_percent))
best_tip_cents = None
best_coins = float('inf')
for tip_cents in range(min_tip_cents, max_tip_cents + 1):
num_coins = count_bills_and_coins(tip_cents)
if num_coins < best_coins:
best_tip_cents = tip_cents
best_coins = num_coins
return best_tip_cents / 100.0
# Get inputs from command-line
meal_price = float(sys.argv[1])
min_tip_percent = float(sys.argv[2])
max_tip_percent = float(sys.argv[3])
print('{:.2f}'.format(optimize_tip(meal_price, min_tip_percent, max_tip_percent)))
Một số mẫu đầu vào và đầu ra:
~$ python tipcalc.py 23.45 15 20
4.00
~$ python tipcalc.py 23.45 15 17
3.55
~$ python tipcalc.py 59.99 15 25
10.00
~$ python tipcalc.py 8.00 13 20
1.05
a program that takes as input (stdin, command-line arguments, or GUI input box, whichever is most convenient in your language)Đây có phải là để ghi đè mặc định của chúng tôi cho đầu vào và đầu ra? Đó là, ví dụ, một hàm có ba số và trả về kết quả được phép?
3.51và 3.75cũng là đầu ra hợp lệ cho trường hợp thử nghiệm 23.45 15 17không? Họ sử dụng cùng một lượng tiền và cũng nằm trong phạm vi.