题解 UVA623 【500!】

· · 题解

实际上,Python有自带的阶乘函数

在math库中有factorial函数,使用:

import math
...math.factorial(x)...

即可。
这题不用预处理,直接使用函数即可:

import math//导入math库
while True:
    try://多组数据
        n=int(input())
        print(n,end='!\n')
        print(math.factorial(n))//使用
    except EOFError://读到EOF
        break

当然,还有\mathcal{O(log_2n)}计算阶乘:

def fac(l,r):
    if l>=r:
        return l
    return fac(l,(l+r)//2)*fac((l+r)//2+1,r)

需要二分实现