概述
给出一个2d数组,代表所得税的档次。输入数组为brackets,其中
brackets[i] = [upperi, percenti]
表示第1个档次的上限为upperi,税率为 %。 brackets数组按上限排序。以下是计算税收的方法
-
上限为0的钱按0%征税
-
upper1-upper0的税率为%1
-
...以此类推
你也会得到收入作为输入。你必须计算出所得税。给出的是最后一个档次的上限大于收入。
例1
Input: brackets = [[4,10],[9,20],[12,30]], income = 10
Output: 1.7
例子2
Input: brackets = [[3,10]], income = 1
Output: 0.3
程序
以下是同样的程序
package main
import "fmt"
func calculateTax(brackets [][]int, income int) float64 {
if income == 0 {
return 0
}
var totalTax float64
numBrackets := len(brackets)
upper := 0
for i := 0; i < numBrackets; i++ {
if i == 0 {
upper = brackets[i][0]
} else {
upper = brackets[i][0] - brackets[i-1][0]
}
taxPer := brackets[i][1]
if income <= upper {
totalTax += float64(income) * float64(taxPer) / 100
break
} else {
totalTax += float64(upper) * float64(taxPer) / 100
income = income - upper
}
}
return totalTax
}
func main() {
output := calculateTax([][]int{{4, 10}, {9, 20}, {12, 30}}, 10)
fmt.Println(output)
output = calculateTax([][]int{{3, 10}}, 10)
fmt.Println(output)
}
输出:
1.7
0.3