每日算法系列【LeetCode 1006】笨阶乘

简介: 笨阶乘

题目描述


通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)

例如,clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1。然而,这些运算仍然使用通常的算术运算顺序:我们在任何加、减步骤之前执行所有的乘法和除法步骤,并且按从左到右处理乘法和除法步骤。

另外,我们使用的除法是地板除法(floor division),所以 10 * 9 / 8 等于 11。这保证结果是一个整数。

实现上面定义的笨函数:给定一个整数 N,它返回 N 的笨阶乘。

示例1

输入:
4输出:
7
解释:
7 = 4 * 3 / 2 + 1

示例2

输入:
10
输出:
12
解释:12 = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1

提示


image.png

题解


笨方法我就不写了,按照运算顺序模拟一遍,数量比较少的话,应该也不会超时。


image.png

image.pngimage.png

代码


c++

classSolution {
public:   
intclumsy(intN) {  
intq=N&3;  
inta[5] = {0, 1, 2, 6, 7}; 
intd[4] = {1, 2, 2, -1};  
returnN>=5?N+d[q] : a[N];  
    }
};

python

classSolution:  
defclumsy(self, N: int) ->int:  
q=N&3a= [0, 1, 2, 6, 7]   
d= [1, 2, 2, -1]   
returnN+d[q] ifN>=5elsea[N]

image.png

作者简介:godweiyang知乎同名华东师范大学计算机系硕士在读,方向自然语言处理与深度学习喜欢与人分享技术与知识,期待与你的进一步交流~

相关文章
|
7月前
|
JavaScript 前端开发 C语言
leetcode每日一题 2021/4/1 1006. 笨阶乘
leetcode每日一题 2021/4/1 1006. 笨阶乘
28 0
|
1月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
45 0
力扣 C++|一题多解之动态规划专题(1)
|
1月前
|
C++ 算法 存储
力扣 C++|一题多解之动态规划专题(2)
力扣 C++|一题多解之动态规划专题(2)
42 0
力扣 C++|一题多解之动态规划专题(2)
|
11月前
LeedCode_04-斐波那契数列(剑指offer-10)
LeedCode_04-斐波那契数列(剑指offer-10)
|
10月前
|
算法
[算法刷题题解笔记] 洛谷 P1007 独木桥 [贪心]
[算法刷题题解笔记] 洛谷 P1007 独木桥 [贪心]
|
算法 C++ Python
每日算法系列【LeetCode 1006】笨阶乘
每日算法系列【LeetCode 1006】笨阶乘
|
算法 C++
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
|
存储 C++
蓝桥杯练习题六 - 大数乘法(c++)
蓝桥杯练习题六 - 大数乘法(c++)
156 0
蓝桥杯练习题六 - 大数乘法(c++)