haskell中的阶乘产品

时间:2015-01-06 17:50:13

标签: python haskell

我正在尝试将Python转换为Haskell但面临困难。我是Haskell的新手,只知道基础知识。 这是我在Haskell中需要的Python代码。有人能帮助我吗?

感谢。

import sys
fact=[]
def facto():
    mod=1000000007
    f1=1;f2=1
    for j in xrange(1,1000001):
        f1=f1*j%mod
        f2=f2*f1%mod
        fact.append(f2)
def main():
    facto()
    tc=int(sys.stdin.readline())
    for i in xrange(tc):
        n=int(sys.stdin.readline())
        sys.stdout.write("Case %d: "%(i+1))
        print fact[n-1]
main()

1 个答案:

答案 0 :(得分:3)

以下是使用scanl生成“阶乘产品”列表的方法:

p = 1000000007 :: Int64
mtimes a b = mod (a * b) p
facts = scanl mtimes 1 [1..]
prodfacts = scanl mtimes 1 facts

注意:

ghci> take 10 facts
[1,1,2,6,24,120,720,5040,40320,362880]

ghci> take 10 prodfacts
[1,1,1,2,12,288,34560,24883200,411327125,709563912]