Leeee1111 / testjudge-asia

0 stars 0 forks source link

B0203 計算電費 #8

Open Leeee1111 opened 3 weeks ago

Leeee1111 commented 3 weeks ago
def calculate_bill(usage, is_summer):
    tiers = [120, 330, 500, 700]
    summer_rates = [2.10, 3.12, 4.39, 4.97, 5.63]
    non_summer_rates = [2.10, 2.68, 3.62, 4.01, 4.50]

    rates = summer_rates if is_summer else non_summer_rates
    bill = 0
    remaining = usage

    for i, tier in enumerate(tiers):
        if remaining <= 0:
            break
        if i == 0:
            units = min(remaining, tier)
        else:
            units = min(remaining, tier - tiers[i-1])
        bill += units * rates[i]
        remaining -= units

    if remaining > 0:
        bill += remaining * rates[-1]

    return round(bill, 2)

usage = int(input())
summer_bill = calculate_bill(usage, True)
non_summer_bill = calculate_bill(usage, False)

print(f"{summer_bill:.2f}")
print(f"{non_summer_bill:.2f}")
Leeee1111 commented 3 weeks ago
# Read input
usage = int(input())

# Calculate summer bill
summer_bill = 0
if usage <= 120:
    summer_bill = usage * 2.10
elif usage <= 330:
    summer_bill = 120 * 2.10 + (usage - 120) * 3.12
elif usage <= 500:
    summer_bill = 120 * 2.10 + 210 * 3.12 + (usage - 330) * 4.39
elif usage <= 700:
    summer_bill = 120 * 2.10 + 210 * 3.12 + 170 * 4.39 + (usage - 500) * 4.97
else:
    summer_bill = 120 * 2.10 + 210 * 3.12 + 170 * 4.39 + 200 * 4.97 + (usage - 700) * 5.63

# Calculate non-summer bill
non_summer_bill = 0
if usage <= 120:
    non_summer_bill = usage * 2.10
elif usage <= 330:
    non_summer_bill = 120 * 2.10 + (usage - 120) * 2.68
elif usage <= 500:
    non_summer_bill = 120 * 2.10 + 210 * 2.68 + (usage - 330) * 3.62
elif usage <= 700:
    non_summer_bill = 120 * 2.10 + 210 * 2.68 + 170 * 3.62 + (usage - 500) * 4.01
else:
    non_summer_bill = 120 * 2.10 + 210 * 2.68 + 170 * 3.62 + 200 * 4.01 + (usage - 700) * 4.50

# Print results rounded to 2 decimal places
print(f"{summer_bill:.2f}")
print(f"{non_summer_bill:.2f}")