Drill

ProblemsGo › billing

Prorate an annual subscription refund

mediumbillingMathGo

When a subscriber cancels early, the unused portion of the annual fee is refunded proportionally.

prorateRefund(annualAmount: int, monthsUsed: int) → int

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func prorateRefund(annualAmount int, monthsUsed int) int {
	
}

Worked examples

CallResult
prorateRefund(12000, 0)12000
prorateRefund(12000, 12)0
prorateRefund(12000, 3)9000
prorateRefund(10000, 5)5833

Hint

Clamp first, then multiply before dividing.

Reference solution in Go
func prorateRefund(annualAmount int, monthsUsed int) int {
	m := monthsUsed
	if m < 0 {
		m = 0
	}
	if m > 12 {
		m = 12
	}
	return annualAmount * (12 - m) / 12
}

The same problem in another language

More billing problems in Go