特拉亨伯格(Trachtenberg)速算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特拉亨伯格(Trachtenberg)速算相关的知识,希望对你有一定的参考价值。

参考技术A

前两天看电影《天才少女》(2017年),在影片中,主角麦肯娜·格瑞丝小女孩(Mckenna Grace) 学会了一种叫做特拉亨伯格(Trachtenberg)的速算系统,感觉很有意思。于是我在网上搜索,在这儿给大家做一个简介,希望也能激起你们的兴趣,并掌握这种速算方法。由于名字太长不好记,我把它简称为:“特速算”。

特速算的作者,是俄国的数学家 Jakow Trachtenberg (1888-1953),据说是在二战期间,被关进[纳✲粹]集中营,在狱中,他开发出这套心算算法。这套算法后来被命名为Trachtenberg(特拉亨伯格)速算系统。
如果想系统的学习,还可以深入看一下英文版图书《The Trachtenberg Speed System of Basic Mathematics》, 由 Ann Cutler和Rudolph McShane 编译。

这儿,我先做个基本的入门介绍,整理给大家。大致按以下内容来讲:

传统的方法,大家都非常熟悉,我们就以电影中 麦肯娜·格瑞丝 做的这道题为例。

如果把这个步骤拆解细一点的话,应该是这样的:

很显然,作为普通的我们来说,要想在大脑中按照这种思路进行心算,最难的应该有两点:

因为太多了,所以很容易搞混淆。为了解决这样的困扰,特拉亨伯格想出的这套特速算,比较好的解决了这种一次运算过多以及位置对齐的问题。
他将中间计算过程进行 分步骤 ,每一步都只做 个位数的乘法和加法 ,所以,很容易在大脑暂时记忆这些中间计算结果。

下面先以乘数是两位数的上述例子,采用特速算的方式重新来看一下其计算步骤。

大脑具体运算过程和记忆方法如下图示意(每个人有自己的记忆方法,这儿做个示意,供你参考):

下面从末尾倒向开始进行特速算,注意只关注当前计算的位。
我们用实心圆点表示对所指示的计算,提取乘法结果的个位(如下图中的值:5)。

我们用空心圆点表示对所指示的计算,提取乘法结果的十位。也即是上一次计算的十位(如上一图的值:3)。

最终,将暂存在大脑中的数相加,放入最终结果的首位(可能是 0🔔,就不必放了)。
再采用联想记忆,给最终结果编排一个故事:

在你的大脑中想象那画面吧😋。

下面再以乘数是三位数的上述例子,采用特速算的方式继续看一下其计算步骤。

下面从末尾倒向开始进行特速算,注意只关注当前计算的位。

采用上述办法,依次类推下面的 5、6步。

接下来我们看稍微有点差异的7、8步。

最终,将暂存在大脑中的数相加,放入最终结果的首位(可能是 0🔔,就不必放了)。
再采用联想记忆,给最终结果编排一个更生动的故事:

当然,你也可以按2位数字谐音,重新编个故事(怎么有意思就怎么编):

再一次,在你的大脑中想象那画面吧😋,这样,你就记住了最终结果。

通过以上步骤,掌握了特速算的方法后,再来看常用到的两位数乘法,就显得容易多了。比如, 你去买猪肉,¥23/斤,重约 3.8 斤,得花多少钱呢?很显然快速分3步:

一看,我的个乖乖,快 ¥100大洋了,少买点吧,吃不起了,吃不起了…… 🙉🙈🙊🐵

当然,这种过于简单的也不一定非得要用特速算,比如上例中,如果我把重量毛算成 4斤,再减2两,就是 23 × 4 ﹣ 23 × 0.2 = 92 - 4.6 = ¥87.4,也能很快的算出来。但如果是3位数的运算,这种简单的心算又不适合了。所以,我们还是要根据情况灵活使用各种速算方法。

好的,基本的特速算方法就是这样咯,不管怎样得多练习一下才能流利的使用。另外,在《The Trachtenberg Speed System of Basic Mathematics》一书中,还提供了各种特殊乘数(比如: ×11等)的运算方法,可以去深入的发掘。后面空了我再来补充介绍一下。

算法leetcode|LCP 17. 速算机器人(rust和go)


文章目录


LCP 17. 速算机器人:

小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 xy),请小扣说出计算指令:

  • "A" 运算:使 x = 2 * x + y
  • "B" 运算:使 y = 2 * y + x

在本次游戏中,店家说出的数字为 x = 1y = 0,小扣说出的计算指令记作仅由大写字母 AB 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 xy 的和为多少。

样例 1:

输入:
	s = "AB"

输出:
	4

解释:
	经过一次 A 运算后,x = 2, y = 0。
	再经过一次 B 运算,x = 2, y = 2。
	最终 x 与 y 之和为 4。

提示:

  • 0 <= s.length <= 10
  • s'A''B' 组成

分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 这道题看起来不难,直接照着题意模拟就行了。
  • 但是结果要的是xy 的和,并不需要知道xy分别是多少。
  • 无论是A操作(x = 2 * x + y)还是B操作(y = 2 * y + x),都会使得xy 的和(2 * x + y + yx + 2 * y + x)翻倍,所以只需要关心做了几次操作而已。


题解

rust

impl Solution 
    pub fn calculate(s: String) -> i32 
        1 << s.len()
    


go

func calculate(s string) int 
    return 1 << len(s)


typescript

function calculate(s: string): number 
    return 1 << s.length;
;

python

class Solution:
    def calculate(self, s: str) -> int:
        return 1 << len(s)


c

int calculate(char* s)
    return 1 << strlen(s);


c++

class Solution 
public:
    int calculate(string s) 
        return 1 << s.length();
    
;

java

class Solution 
    public int calculate(String s) 
        return 1 << s.length();
    


原题传送门:https://leetcode.cn/problems/nGK0Fy/


非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


以上是关于特拉亨伯格(Trachtenberg)速算的主要内容,如果未能解决你的问题,请参考以下文章

特拉亨伯格方法

经验分享Trachtenberg system(特拉亨伯格速算系统)

请问,在电影《天才少女》一开始的时候,那个小女孩的父亲所提到的速算方式是啥?真的很好奇!请告诉我

理解 Trachtenberg 速算法

如何口算十一位数乘十一位数

《神秘海域》电影第五次换导演!不过主角还是荷兰弟