给出两个数字n,m,要求在1s内回答出(n ! ! !) \% m(n!!!)%m的值(即n的阶乘的阶乘的阶乘对m取模后的值)
时间: 2023-08-28 12:06:48 浏览: 162
计算1!……+N!的阶乘和
这个问题可以使用递归方法解决。我们可以先计算n的阶乘,然后将结果作为参数调用一个递归函数,每次计算阶乘的结果的阶乘,直到递归到第三次。
具体实现代码如下:
```python
def fact(n, m):
res = 1
for i in range(1, n + 1):
res = (res * i) % m
return res
def f(n, m):
a = fact(n, m)
b = fact(a, m)
c = fact(b, m)
return c
n, m = map(int, input().split())
print(f(n, m))
```
在上面的代码中,我们首先定义了一个fact函数,用于计算n的阶乘对m取模的值。然后定义了一个递归函数f,每次先调用fact计算阶乘的结果,然后将结果作为参数递归调用f,直到递归到第三次,即计算阶乘的结果的阶乘的阶乘。最后直接输出f(n, m)即可。
需要注意的是,在计算过程中,每次乘法运算都需要对m取模,以避免结果过大导致溢出。
阅读全文