Python|一个数的超阶乘。
给定一个数字,任务是找到一个数字的超阶乘。将前 n 个阶乘的乘积相乘的结果称为一个数的超阶乘。
Superfactorial(n)= 1 ^ n * 2 ^ (n-1) * 3 ^ (n-2) * . . . . . * n ^ 1
例子:
Input : 3
Output : 12
H(3) = 1! * 2! * 3! = 12
Input : 4
Output : 288
H(4) = 1^4 * 2^3 * 3^2 * 4^1 = 288
一种有效的方法是迭代计算所有阶乘直到 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 的超阶乘。