365×99的简便算法,用Golang写个视频讲解,连小学生都能看懂

你知道吗?我第一次看到“365×99”这个算式的时候,脑子里的第一反应是——掏出手机计算器,但后来我发现,原来这道题有个特别巧妙的简便算...

你知道吗?我第一次看到“365×99”这个算式的时候,脑子里的第一反应是——掏出手机计算器,但后来我发现,原来这道题有个特别巧妙的简便算法,而且用 Golang 写个视频讲解程序,能让算法原理变得特别直观。

为什么365×99需要简便算法?

先想想,99接近但又不是100,如果你直接算365×99,常规笔算是:

365×99的简便算法,用Golang写个视频讲解,连小学生都能看懂

   365
×   99
-------
  3285
 3285
-------
36135

这个计算过程本身没什么问题,但要是放在考试里,你写上这么一大串,万一哪一步进位算错了,那就前功尽弃了。—说实话,谁喜欢一堆计算步骤挤在一起的感觉呢?

核心算法:把99换成(100-1)

这里用到了一个小学三年级就学过的知识:乘法分配律

365×99 = 365×(100-1) = 365×100 - 365×1

看到没?这道原来看着挺麻烦的两位数乘法,瞬间变成了口算题:

  • 365×100 = 36500 (就加两个0嘛)
  • 365×1 = 365
  • 36500 - 365 = 36135

答案一模一样,但算起来快多了。

这个算法有个关键点:你要习惯把99、98、101、102这类数字看成“整百±几”,比如98就是100-2,101就是100+1,一旦有了这个意识,很多计算都能秒出答案。

用Golang写一个视频讲解程序

光说理论不够过瘾,我们来写个 Golang程序,把这个算法编成一段可展示的“视频讲解”效果——别紧张,这不是让你真的去做视频,而是通过终端输出模拟一步一步的讲解过程。

上代码,我把每一步都加了注释,你直接能运行看看效果:

package main
import (
    "fmt"
    "time"
)
func main() {
    // 第一步:出题
    fmt.Println("📐 365×99 简便算法视频讲解")
    fmt.Println("题目:365 × 99 = ?")
    time.Sleep(2 * time.Second)
    // 第二步:展示思路
    fmt.Println("\n💡 关键思路:把 99 变成 (100-1)")
    time.Sleep(2 * time.Second)
    // 第三步:应用乘法分配律
    fmt.Println("\n✨ 根据乘法分配律:")
    fmt.Println("   365 × 99 = 365 × (100 - 1)")
    fmt.Println("            = 365 × 100 - 365 × 1")
    time.Sleep(2 * time.Second)
    // 第四步:计算结果
    fmt.Println("\n🔢 分步骤计算:")
    part1 := 365 * 100
    fmt.Printf("   365 × 100 = %d\n", part1)
    time.Sleep(1 * time.Second)
    part2 := 365 * 1
    fmt.Printf("   365 × 1   = %d\n", part2)
    time.Sleep(1 * time.Second)
    // 第五步:得出最终答案
    answer := part1 - part2
    fmt.Printf("\n🎉 最终答案:%d - %d = %d\n", part1, part2, answer)
    // 第六步:验证
    fmt.Println("\n✅ 验证:用普通方法再算一次")
    result := 365 * 99
    fmt.Printf("   365 × 99 = %d\n", result)
    if result == answer {
        fmt.Println("✔️ 两种方法结果一致,算对了!")
    } else {
        fmt.Println("❌ 哎呀,出错了?")
    }
}

运行这段代码,终端就会像一帧一帧的动画一样,把计算过程展示出来,每两秒跳一步,很像视频里的“慢动作回放”。

除了99,还有哪些数字能用这个技巧?

我整理了一个小表格,方便你对照着看:

原始算式 变形方式 简便算式 思路解释
365×99 99 = 100-1 365×100 - 365×1 减一个数
365×98 98 = 100-2 365×100 - 365×2 减两个数
365×101 101 = 100+1 365×100 + 365×1 加一个数
365×102 102 = 100+2 365×100 + 365×2 加两个数
365×97 97 = 100-3 365×100 - 365×3 减三个数
365×103 103 = 100+3 365×100 + 365×3 加三个数

你看,只要原数离100越近,这个方法越省事儿,甚至你还能把它推广到更复杂的场景,

  • 365×199 = 365×(200-1) = 73000-365 = 72635
  • 365×999 = 365×(1000-1) = 365000-365 = 364635

用费曼教学法检验一下

费曼老爷子说过:“如果你不能简单地解释它,你就没有真正理解它。”

那我现在来试试,用小孩能懂的话解释365×99的算法:

“你想啊,365个99块的红包加起来多少钱?直接算好麻烦哦,但我们知道99块其实就是100块少1块嘛,那我们就先给每个红包里塞100块,一共365个,就是36500块,但每个红包里我们多塞了1块,所以我们得把多塞的365块拿出来,剩下就是36135块啦。”

是不是特别生活化?你要是能用这种唠叨话把算法讲出来,那就说明你真正明白了。

讲个真实的小故事:我第一次自己悟出这个算法,是在超市结账排队的时候,前面的阿姨买了99包泡面(我猜她是开小卖部的),收银员报了个总数,我站在后面,默默算了一遍 单价×99,结果和收银小票一模一样,那一刻的感觉贼爽,算法不只有用,它还能让平常的生活多出一点小确幸。

给Golang代码加点“视频讲解”的感觉

刚才那个程序已经能在终端里做逐步讲解了,但如果你想让它更有视频感,还可以加点料——比如用 fmt.Printf 控制输出位置,或者用 \r 回车符实现同一行更新数字的效果。

我加一个 高级版本 的片段:

// 模拟视频进度条
for i := 0; i <= 100; i += 10 {
    fmt.Printf("\r⏳ 讲解进度:%d%%", i)
    time.Sleep(500 * time.Millisecond)
}
fmt.Println("\n🎬 视频开始播放...")

这个小进度条会让你的“视频”显得更专业,虽然它只是在终端里跑,但配合之前的逐步输出,真的有种在看教学视频的感觉。

还有一个小建议:你可以在代码里 加入声音提示(比如用 \a 控制字符让终端哔一声),在每一步完成时响一下,这样用户就算不看屏幕,也能知道进度。

不过需要注意,不同操作系统的终端对 \a 支持不一样,Windows里可能没声音,Linux和macOS一般没问题,这是个挺现实的坑,我遇到过好几次。

365×99这个算法的底层逻辑

其实不只是乘99,这个算法的底层逻辑就是 乘法分配律凑整思想

乘法分配律的公式是:a×(b+c) = a×b + a×c,而我们用的是它的变体:a×(b-c) = a×b - a×c。

凑整思想呢,就是让计算尽可能往整十、整百、整千去靠,因为人类(包括计算机)处理整数的速度远比处理非整数快,不信你试试这个Golang的小对比:

start := time.Now()
for i := 0; i < 1000000; i++ {
    _ = 365 * 99
}
fmt.Println("直接乘耗时:", time.Since(start))
start = time.Now()
for i := 0; i < 1000000; i++ {
    _ = 365*100 - 365
}
fmt.Println("简便算法耗时:", time.Since(start))

虽然差距微乎其微(现代CPU乘法已经很快了),但它展示了 算法优化的核心思想:用更少的、更快的操作,替代更多的、更慢的操作

怎么把这个“视频讲解”分享给别人

你完全可以把上面的Golang代码打包成可执行文件,发给朋友或者学生,对方不用装Go环境,双击(或命令行运行)就能看到那个“视频讲解”。

在Go里打包很简单:

# 在Windows上打包成exe
GOOS=windows GOARCH=amd64 go build -o 365x99_video.exe main.go
# 在Mac上打包
GOOS=darwin GOARCH=amd64 go build -o 365x99_video main.go
# 在Linux上打包
GOOS=linux GOARCH=amd64 go build -o 365x99_video main.go

这样你就能在不同平台上运行了,如果你想让讲解更生动,还可以把输出内容改成中文加一点 emoji,就像我之前代码里那样,小孩子看到 🎉 和 ✅ 会很开心的。

我还试过把输出内容改成带颜色的(用 ANSI 转义码),比如关键数字用红色,公式用绿色,效果确实不错,但有个问题:不是所有的终端都支持彩色输出,比如在Windows的旧版CMD里,颜色显示会变成乱码,所以我一般只在确认终端支持的情况下才加颜色。

看完这个,我觉得你也能写出来

其实写这样一个“视频讲解”程序,你不需要懂特别多Go语言知识,就用 fmt 打印、time.Sleep 控制节奏、再加点带颜色的文本,一个教学视频就出来了。

我甚至还用它来教过邻居家的小孩——当然不是直接甩给他代码,而是把每一步的公式和数字都打印出来,让他看着终端跟着念,那孩子学得可快了,后来他自己还会反过来教他妈妈。

你知道吗?人类学习有一个特点:视觉 + 听觉 + 动手三种渠道同时使用,记忆效果最好,我们这个程序其实只占了视觉和一点点节奏感(听觉是脑补的),但已经比单纯的文字公式要强很多了,如果再配合你拿着电脑跟他一起念,那就更完美。

我刚接触Go的时候,就是想做这种“看得见效果的”小项目才学的,写一百行hello world不如写十行能跑出实际结果的程序,365×99的算法只是一个引子,更重要的是你能体验到:把数学和代码结合,能产生什么样的化学反应。

有时候我在想,也许以后真的可以用Go写一个全自动的教学视频生成器,输入一个数学公式,程序自动把每一步拆解、配上颜色、加上解释文字,最后输出一个能跑的视频脚本,听起来有点疯狂,但以现在的技术,感觉也不是完全不可能。

本文来自作者[kyadmin]投稿,不代表be365立场,如若转载,请注明出处:http://www.uss1.cn/keji/873.html

(4)

文章推荐

发表回复

本站作者才能评论

评论列表(4条)

  • kyadmin
    kyadmin 2026-06-30

    我是be365的签约作者“kyadmin”!

  • kyadmin
    kyadmin 2026-06-30

    希望本篇文章《365×99的简便算法,用Golang写个视频讲解,连小学生都能看懂》能对你有所帮助!

  • kyadmin
    kyadmin 2026-06-30

    本站[be365]内容主要涵盖:be365,be365网站,be365网址,ball365体育,Be365排名

  • kyadmin
    kyadmin 2026-06-30

    本文概览:你知道吗?我第一次看到“365×99”这个算式的时候,脑子里的第一反应是——掏出手机计算器,但后来我发现,原来这道题有个特别巧妙的简便算...

    联系我们

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们