输出n!的准确值。
样例输入
10
样例输出
3628800
模拟小学学过的乘法计算,只不过小学学的是先乘完后相加,我做的是边乘边相加。
竖式中上面的一行,乘以下面的一个数后得到一行,对下面得到的n行以高精度加法的思想进行相加,每次相加取到的个位就是结果中相应位置的数。为了便于计算我们一列表下标为0的位置作为个位。
老规矩先上运行结果:
对列表进行运算,低位放在左边
def sumlist(ls1,ls2):
ans=[]
长的放在后面
if len(ls1)>len(ls2):
ls1,ls2=ls2,ls1
i=0
temp=0
while i<len(ls2) or temp!=0:
if i<len(ls1):
temp=ls1[i]+ls2[i]+temp
else:
temp=ls2[i]+temp
ans.append(temp%10)
temp//=10
i+=1
return ans
n=int(input())
ans=[0]*3000
ans[0]=1
for i in range(2,n+1):
j=0
temp=0
while j<len(ans) or temp!=0:
temp=ans[j]*i+temp
ans[j]=temp%10
temp//=10
j+=1
print(ans)
print(int(“”.join(map(str,ans[::-1]))))
=========================================================================