关于2014的最大算式

除夕晚上,我们在某个来往的扎堆群里出了一道关于2014的趣味数学题,题目是这样的:

请使用2、0、1、4四个数字加上运算符,构造一个算式,使其计算结果尽可能大。数字的顺序可以随意调换,可以使用括号,但不能使用阶乘等单目运算。

题目很简单,比如 2 + 0 + 1 + 4 就是一个可能的解答。不过,这个算式的结果显然太小了。

另外还有一个要注意的是,我们要使用常用的或大家公认的运算符,不能使用偏门的或自定义运算符,不然的话就会有问题。

比如,如果我定义一个运算符“#”,让 a#b 的结果是一个巨大的数字,这样显然可以得到很大的结果,但别人也可以定义更大的运算符,这样的比较恐怕永远不会有结果出来。

同时,我们把阶乘运算(n!)也禁止了,因为这种单目运算可以重复使用,比如:

4210!!!!!!!…

当然,我们可以禁用连阶乘,不过简单起见,我们直接把整个阶乘都禁用了。

传统解

扎堆里很快有人给出了答案:

2^(4^10)

这儿的 ^ 表示乘方运算。

如果只能使用加、减、乘、除、乘方、开方等传统运算符,这大概是能得到的最大算式了,它相当于 2^1048576,如果把结果写出来,会是一个长达 31 万位的数字。

使用位运算后的解

不过,既然扎堆中基本都是程序员,大家自然把位运算也用上了。位运算对程序员来说也是一种常见的公认的运算。

位运算中,我们加了一个假设:左移运算(<<)时可以不考虑溢出。在一些编程语言(比如Python)中,的确有这样的特性,只要内存足够,左移永远不会溢出。

如果加上了位运算,注意到左移一位相当于乘以 2,于是我们有了更大的算式:

1<<(2<<40)

这个算式相当于 2^2199023255551 ,一个大得惊人的数字。

更多

除了上面的解答,还有不少同学给出了各种有趣的解法。比如:

421/0

这个算式中直接将 0 作为除数,得到的结果可以认为是无穷大,某种程度上说可以秒杀所有其他回答。不过让一个数除以 0 还是比较怪异,这种方案最终被否决了。

另外还有一些方案用到了位运算中的取反操作,比如:

2^(40^~1)

根据CPU的不同,~1 得到的结果也不同,但总之会是一个很大的数字。不过,这种方案的值取决于硬件,多少有一些遗憾。

除了取反外,也有同学使用无符号右移来得到一个大数,比如:

4^((0-1)>>>2)

这个方案也很有创意,但结果同样也取决于硬件。

小结

最终我们认为的最佳方案是:

1<<(2<<40)

你有没有更好的方案呢?

2 Replies to “关于2014的最大算式”

  1. 老杰把 RSS Feed 取了?
    feed 访问不了啦……
    看 HTTP 响应返回301 Moved Permanently。

    完整:
    curl -I oldj.net/feed
    HTTP/1.1 301 Moved Permanently
    Date: Mon, 03 Feb 2014 13:57:46 GMT
    Server: Apache/2.2.14 (Ubuntu)
    X-Powered-By: PHP/5.3.2-1ubuntu4.22
    X-Pingback: http://oldj.net/xmlrpc.php
    Last-Modified: Sat, 01 Feb 2014 08:01:28 GMT
    ETag: “2e5792432393f9ef8ba0d374ef85b2e2”
    Location: http://oldj.net/feed/
    Cache-Control: max-age=300
    Expires: Mon, 03 Feb 2014 14:02:46 GMT
    Vary: Accept-Encoding
    Content-Type: text/html

    1. 没有取消呢,末尾要加一个“/”,访问地址是 http://oldj.net/feed/

      curl -I oldj.net/feed/
      HTTP/1.1 200 OK
      Date: Wed, 05 Feb 2014 13:18:50 GMT
      Server: Apache/2.2.14 (Ubuntu)
      X-Powered-By: PHP/5.3.2-1ubuntu4.22
      X-Pingback: http://oldj.net/xmlrpc.php
      Last-Modified: Sat, 01 Feb 2014 08:01:28 GMT
      ETag: “2e5792432393f9ef8ba0d374ef85b2e2”
      Cache-Control: max-age=300
      Expires: Wed, 05 Feb 2014 13:23:50 GMT
      Vary: Accept-Encoding
      Content-Type: text/html

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s