APL 中的阶乘数字和(欧拉计划 20)

Factorial digit sum in APL (Project Euler 20)

首先我找到了+/⍎¨⍕(!8),它给了我结果9。但是如果我这样做100!,因为数字很大,我无法得到它。

使用 ⍎¨⍕(!100) 我收到语法错误:⍎SYNTAX ERROR

有没有其他方法可以解决这个问题,或者你能建议我做一些修改吗?

!100 是一个很大的数字,当您格式化它的结果时,您将得到一个字符串,表示 E 表示法中的数字。

⍕!100'9.332621544E157',当您尝试评估 () 每个字符时,您 运行 陷入语法错误,因为 E 没有意义。

有两种方法可以将大整数拆分成数字:

先用反解码,例子可以在APLcart

上找到
    10⊥⍣¯1!100

然而,这容易受到浮点不精确的影响。

第二个也是首选选项是使用 dfns 库中的 big,它可以使用 quad 函数导入 CY

'big'⎕CY'dfns'

例子here

谢天谢地,最后一个示例涵盖了您的确切案例!阶乘 100 是 ↑×big/⍳100

问题的最终解决方案可能如下所示:

+/⍎¨↑×big/⍳100