【问题标题】:Factorial digit sum in APL (Project Euler 20)APL 中的阶乘数字和(Project Euler 20)
【发布时间】:2021-12-23 22:39:21
【问题描述】:

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

⍎¨⍕(!100) 出现语法错误:⍎SYNTAX ERROR

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

【问题讨论】:

    标签: math digits largenumber apl


    【解决方案1】:

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

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

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

    首先是反解码,例子可以在APLcart找到

        10⊥⍣¯1!100
    

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

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

    'big'⎕CY'dfns'

    例子here

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

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

    +/⍎¨↑×big/⍳100

    【讨论】:

    • 也许展示如何导入big 运算符,甚至可能展示如何使用它计算最终总和?
    猜你喜欢
    • 2021-08-07
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 2015-01-23
    相关资源
    最近更新 更多