输入n ,计算s=1!+2!+3!+…+n! 的末6 位(不含前导0)。n≤106 , n! 表示前n 个正整
时间: 2024-04-15 20:21:10 浏览: 173
TMega16(8MRC)+HT1621+一体化红外接收头
这道题可以使用Python的循环和递归两种方式来实现。下面我将分别介绍这两种方法。
1. 循环实现:
循环实现的思路是先计算出每个数的阶乘,然后将它们相加。由于只需要求末6位,所以在计算每个数的阶乘时,只需要保留后6位即可。
代码如下:
```python
n = int(input())
s = 0
factorial = 1
for i in range(1, n+1):
factorial = (factorial * i) % 1000000
s = (s + factorial) % 1000000
print(s)
```
2. 递归实现:
递归实现的思路是先递归计算出n-1的阶乘,然后将n的阶乘加上n-1的阶乘即可。同样地,只需要保留后6位即可。
代码如下:
```python
n = int(input())
s = 0
def factorial(n):
if n == 0:
return 1
else:
return (n * factorial(n-1)) % 1000000
for i in range(1, n+1):
s = (s + factorial(i)) % 1000000
print(s)
```
阅读全文