leetcode1006-笨阶乘
题目描述
- 计算“变种阶乘”,符号顺序为
* / + - ...,如f(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1
示例
输入:4
输出:7
解释:7 = 4 * 3 / 2 + 1
输入:10
输出:12
解释:12 = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1
题解
- 思路:多写两位,找下规律,模拟即可
func clumsy(n int) int {
// (14 * 13 / 12) + 11 - (10 * 9 / 8) + 7 - (6 * 5 / 4) + 3 - (2 * 1)
if n <= 2 { return n }
res := 0
for i := n; i >= 1; i -= 4 {
if i <= 2 {
res -= i
break
}
t := i * (i - 1) / (i - 2)
if i == n { res += t
} else { res -= t }
res += i - 3
}
return res
}

浙公网安备 33010602011771号