1006. 笨阶乘

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

通常,正整数 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



提示:


   1 <= N <= 10000

   -2^31 <= answer <= 2^31 - 1  (答案保证符合 32 位整数。


javascript


/**
 * @param {number} N
 * @return {number}
 */
var clumsy = function (N) {
    if (N === 1) {
        return 1
    } else if (N === 2) {
        return 2
    } else if (N === 3) {
        return 6
    } else if (N === 4) {
        return 7
    }
    if (N % 4 === 0) {
        return N + 1
    } else if (N % 4 <= 2) {
        return N + 2
    } else {
        return N - 1
    }
};


GO



func clumsy(N int) int {
 if N == 1 {
  return 1
 } else if N == 2 {
  return 2
 } else if N == 3 {
  return 6
 } else if N == 4 {
  return 7
 }
 if N%4 == 0 {
  return N + 1
 } else if N%4 <= 2 {
  return N + 2
 } else {
  return N - 1
 }
}


python



class Solution(object):
    def clumsy(self, N):
        """
        :type N: int
        :rtype: int
        """
        if N == 1:
            return 1
        elif N == 2:
            return 2
        elif N == 3:
            return 6
        elif N == 4:
            return 7
        if N % 4 == 0:
            return N + 1
        elif N % 4 <= 2:
            return N + 2
        else:
             return N - 1


typescript



function clumsy(N: number): number {
    if (N === 1) {
        return 1
    } else if (N === 2) {
        return 2
    } else if (N === 3) {
        return 6
    } else if (N === 4) {
        return 7
    }
    if (N % 4 === 0) {
        return N + 1
    } else if (N % 4 <= 2) {
        return N + 2
    } else {
        return N - 1
    }
};
相关文章
|
6月前
|
算法 C语言
汉诺塔问题(利用递归解决)内含斐波那契数列0.o
汉诺塔问题(利用递归解决)内含斐波那契数列0.o
79 0
|
6月前
|
C语言
c语言编程练习题:7-41 计算阶乘和
c语言编程练习题:7-41 计算阶乘和
143 0
|
JavaScript 前端开发 C语言
leetcode每日一题 2021/4/1 1006. 笨阶乘
leetcode每日一题 2021/4/1 1006. 笨阶乘
39 0
|
算法 搜索推荐 程序员
C语言第十五练——输出第n位的斐波那契数
C语言第十五练——输出第n位的斐波那契数
90 0
|
6月前
|
C语言
C语言递归问题【青蛙跳台阶】和【汉诺塔】
C语言递归问题【青蛙跳台阶】和【汉诺塔】
|
6月前
|
C语言
每天一道C语言编程(递归:斐波那契数,母牛的故事)
每天一道C语言编程(递归:斐波那契数,母牛的故事)
38 0
|
6月前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
47 0
浅谈递归函数(最后一个例题:浅谈汉诺塔思路与代码)
浅谈递归函数(最后一个例题:浅谈汉诺塔思路与代码)
|
C语言
C语言经典问题—猜名次、猜凶手和杨辉三角
C语言经典问题—猜名次、猜凶手和杨辉三角
69 0
|
算法 Python
转:最大公约数算法很无聊吗?一个轻松方法(辗转相除法)3行代码搞定
最大公约数算法不是很无聊,计算最大公约数是数学中一个重要的概念,可以用于判断两个数是否互质、求分数的约分等,在很多领域都有广泛的应用。辗转相除法3行代码搞定。
71 0