📜  Python|一个数的超阶乘。

📅  最后修改于: 2022-05-13 01:54:52.924000             🧑  作者: Mango

Python|一个数的超阶乘。

给定一个数字,任务是找到一个数字的超阶乘。将前 n 个阶乘的乘积相乘的结果称为一个数的阶乘。

Superfactorial(n)= 1 ^ n * 2 ^ (n-1) * 3 ^ (n-2) * . . . . . * n ^ 1

例子:

一种有效的方法是迭代计算所有阶乘直到 n,然后计算所有阶乘的乘积直到 n。

# Python3 program to find the
# Superfactorial of a number
  
# function to calculate the
# value of Superfactorial 
def superfactorial(n):
  
    # initialise the
    # val to 1
    val = 1
    ans = []
    for i in range(1, n + 1):
        val = val * i
        ans.append(val)
    # ans is the list with
    # all factorial till n.
    arr = [1]
    for i in range(1, len(ans)):
        arr.append((arr[-1]*ans[i]))
  
    return arr
  
# Driver Code
n = 5
arr = superfactorial(n)
print(arr[-1])
输出:
34560

时间复杂度: O(N)
由于数字的超阶乘可能很大,因此数字会溢出。我们可以使用 C++ 中的 boost 库或Java中的 BigInteger 来存储数字 N 的超阶乘。