快速计算乘法法则

news2024/12/26 23:25:26

快速计算乘法法则

    • 简便算法的原理
    • 算法的实现
      • 1.和为偶数
      • 2.和为奇数
      • 3.总结及注意事项
    • 实战演练

简便算法的原理

我们发现乘法一共只有两种,分别是两因数和为奇数与和为偶数。和为奇数的两数之和总可以拆成两个相邻的数(如 13 = 6 + 7 13 = 6+7 13=6+7),和为偶数的两数之和总可以拆成两个相同的数(如 12 = 6 + 6 12 = 6+6 12=6+6)。不难发现和相同的一组数的乘积是有某种规律的。

  1. 先看和为偶数的:
    在这里插入图片描述

不难发现,与最大值的因数相差 n n n 时,乘积相差 n 2 n^2 n2

2.再看和为奇数的:
在这里插入图片描述
与最大值的因数中较大的数相差 n n n 时,乘积相差 n ( n + 1 ) n(n+1) n(n+1)

算法的实现

可以将原算式转化为和相同的其他算式(最好是凑整),用两个算式与最大值的关系进行调整。
基本公式:原算式 = 新算式 + 新算式与最大值的差 - 原算式与最大值的差。同样分为和为奇数与和为偶数分别进行推导。本部分只推导调整值(即新算式与最大值的差 - 原算式与最大值的差)。

1.和为偶数

这部分相对简单,所以放在了前面。
设最大值时的因数为 x x x,原算式较大因数为 b b b,调整后的较大数与原较大数的差为 y y y(如原式为 41 × 87 41 \times 87 41×87,新式为 28 × 100 28 \times 100 28×100,则 y = 13 y = 13 y=13)。根据上面的结论,原算式与最大值的差为 ( b − x ) 2 (b-x)^2 (bx)2,新算式与最大值的差为 ( b + y − x ) 2 (b+y-x)^2 (b+yx)2。则调整值为 ( b + y − x ) 2 − ( b − x ) 2 = y [ 2 ( b − x ) + y ] (b+y-x)^2 - (b-x)^2 = y[2(b-x)+y] (b+yx)2(bx)2=y[2(bx)+y]

2.和为奇数

设最接近时较大数为 x x x b , y b,y b,y 定义同上。原算式与最大值的差为 ( b − x ) ( b − x + 1 ) (b-x)(b-x+1) (bx)(bx+1),新算式与最大值的差为 ( b + y − x ) ( b + y − x + 1 ) (b+y-x)(b+y-x+1) (b+yx)(b+yx+1)。调整值为 ( b + y − x ) ( b + y − x + 1 ) − ( b − x ) ( b − x + 1 ) = y ( b − x ) + y ( b − x + 1 ) + y 2 = y [ 2 ( b − x ) + y + 1 ] (b+y-x)(b+y-x+1)-(b-x)(b-x+1) = y(b-x)+y(b-x+1)+y^2 = y[2(b-x)+y+1] (b+yx)(b+yx+1)(bx)(bx+1)=y(bx)+y(bx+1)+y2=y[2(bx)+y+1]

3.总结及注意事项

  1. 当调整向远离最大值方向进行时 y y y 为正,向靠近最大值方向进行时 y y y 为负。
  2. 两个基本公式:
    和为偶数时:原算式=新算式+ y [ 2 ( b − x ) + y ] y[2(b-x)+y] y[2(bx)+y]
    和为奇数时:原算式=新算式+ y [ 2 ( b − x ) + y + 1 ] y[2(b-x)+y+1] y[2(bx)+y+1]
    3.公式的拓展:
    如果令 x x x 为最大值时较小的因数, a a a 为原算式中较小的因数,则两个调整值也可分别写作 y [ 2 ( x − a ) + y ] y[2(x-a)+y] y[2(xa)+y] 以及 y [ 2 ( x − a ) + y + 1 ] y[2(x-a)+y+1] y[2(xa)+y+1]

实战演练

计算 578 × 739 578 \times 739 578×739
step 1:判断,和为奇数, x = ⌈ 578 + 739 2 ⌉ = 659 x = \lceil \frac{578+739}{2} \rceil = 659 x=2578+739=659
step 2:写出新算式,新算式可为 517 × 800 = 413600 517 \times 800 = 413600 517×800=413600,此时 y = 61 y = 61 y=61
step 3:计算调整值,调整值为 61 × [ 2 × ( 739 − 659 ) + 61 + 1 ] = 61 × 222 = 13542 61 \times [2 \times(739-659)+61+1] = 61 \times222 = 13542 61×[2×(739659)+61+1]=61×222=13542
step 4:加和,原式的结果为 413600 + 13542 = 427142 413600 + 13542 = 427142 413600+13542=427142
这个方法 100% 有效,因为是经过数学推导得到的。背下两组公式,相信你的计算速度会有很大提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1631141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】ESRT-Transformer for Single Image Super-Resolution

ESRT-Transformer for Single Image Super-Resolution 论文地址摘要1. 引言2.相关工作2.1 基于 CNN 的 SISR 模型2.2 Vision Transformer Transformer 3. Efficient Super-Resolution Transformer3.1. Lightweight CNN Backbone (LCB)3.2. High-frequency Filtering Module (HF…

(十一)Servlet教程——Request请求转发

1.Web应用在处理客户端的请求的时候,一般的时候都需要多个资源协同处理,比如先经过一个Servlet的处理,然后再经过另外一个Servlet的处理。但是在一个Servlet中又不能直接调用另外一个Servlet的service方法,所以Servlet就提供了请求…

c++ primer plus(2)

前言 延续上一讲的内容,今天来写一写这本书的第三章:处理数据 好吧,本次博客仍然是总结重点内容 简单变量 在本书中变量有三个属性 1信息存储在什么地方 2要存储什么 3存储类型 比如 int braincount; braincount5; 这两行代码体现了…

找不到mfc140u.dll文件如何处理?这三种方法帮你快速修复mfc140u.dll

当你的电脑出现提示,显示找不到mfc140u.dll文件,从而无法继续执行代码,你需要知道如何应对这种情况。今天我们就来详细说明如何解决mfc140u.dll文件丢失的问题,并对该文件进行详细分析。这个文件是Microsoft Visual Studio的一个重…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model:负责数据存储 View:负责页面展示 View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率:…

idea的插件,反编译整个jar包

idea的插件,反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下:2.2 选中jar包,点出右键 3.不用插件,手动查看某一个java类3.1 选中jar包,点出右键 1.安装插件 1.1找到插…

VPN的基本概念

随着互联网的普及和应用的广泛,网络安全和隐私保护越来越受到人们的关注。在这个信息爆炸的时代,我们的个人信息、数据通信可能会受到各种威胁,如何保护自己的隐私和数据安全成为了一个迫切的问题。而VPN(Virtual Private Network…

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证

说明:如果没有gerrit-trigger,说明缺少插件,先安装插件即可。 步骤 1.在Jenkins首页点击Manage Jenkins 2.点击Gerrit Trigger 3.配置gerrit服务器 下图是已配置好的gerrit服务器,配置完毕记得点击status下面的按钮进行测试服务…

Linux学习之路 -- 进程篇 -- 自定义shell的编写

前面介绍了进程程序替换的相关知识&#xff0c;接下来&#xff0c;我将介绍如何基于前面的知识&#xff0c;编写一个简单的shell&#xff0c;另外本文的所展示的shell可能仅供参考。 目录 <1>获取用户的输入和打印命令行提示符 <2>切割字符串 <3>执行这个…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__

文章目录 openssl3.2 - exp - 使用默认的函数宏&#xff0c;在release版中也会引入__FILE__概述笔记验证是否__FILE__在release版下也能用&#xff1f;将openssl编译成release版的&#xff0c;看看CRYPTO_free()是否只需要一个参数就行&#xff1f;将工程中的openssl相关的库换…

Vue---组件

Vue—组件 目录 Vue---组件定义组件全局组件局部组件 组件通讯***重点***父子通信之父传子&#xff08;props&#xff09;父子通信之子传父&#xff08;$emit&#xff09;ref属性&#xff08;$refs&#xff09; 动态组件插槽命名插槽 定义组件 全局组件 vue2中template只能传…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本&#xff0c;推荐使用下载地址可以找到社区老版本&#xff1a; https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件&#xff0c;导入到…

IMU/捷联惯导常见的术语,以及性能评价标准(附Python解析代码)

0. 简介 现在的机器人领域在普遍使用IMU&#xff08;惯性导航单元&#xff09;。该系统有三个加速度传感器与三个角速度传感器&#xff08;陀螺&#xff09;组成&#xff0c;加速度计用来感受飞机相对于地垂线的加速度分量&#xff0c;陀螺仪用来感知飞机的角速率变化&#xff…

服务器被CC攻击怎么办

遇到CC攻击时&#xff0c;可采取以下措施&#xff1a;限制IP访问频率、启用防DDoS服务、配置Web应用防火墙、增加服务器带宽、使用负载均衡分散请求压力。 处理服务器遭遇CC攻击的方法如下&#xff1a; 1. 确认攻击 你需要确认服务器是否真的遭受了CC攻击&#xff0c;这可以…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

张大哥笔记:我付钱了,我就是大爷?

很抱歉用这个当做标题&#xff0c;来给大家分享一些电商的故事&#xff01;大家好&#xff0c;我是张大哥&#xff0c;今天聊聊在电商路上遇到过的奇葩买家&#xff1f; 比如最近我在做PDD的时候&#xff0c;就会遇到很多莫名其妙的sha子&#xff0c;咱是知识份子&#xff0c;肯…

Excel vlookup函数的使用教程 和 可能遇到的错误解决方法

使用VLOOKUP示例 被查询的表格 表一 A列B列C列A1aB2bC3c 要匹配的列 表二 F列G列H列ACBDA 要G列匹配字母&#xff0c;H列匹配数字 G 使用公式VLOOKUP(F5,A:D,3,0) 参数说明 F5 是表二 F列第五行的A A:D表是要匹配的数据列表在A到D列&#xff0c;就是表一 &#xff08;注意…

go 安装软件报go.mod file not found

执行 go get -u github.com/go-sql-driver/mysql 下载mysql 报错 解决方法: 控制台&#xff1a;输入go env 返回如下&#xff1a; 红圈值为NUL&#xff0c;需要设置GOMOD的值, 然后再控制台执行 &#xff08;1&#xff09;mkdir mod (2)go mod init mod 然后再执行下载&…

Linux逻辑方式合并物理磁盘

在日常生活中&#xff0c;我们总是遇到一个文件太大&#xff0c;以至于我们的两个磁盘都装不下&#xff0c;这时我们就需要将两块物理磁盘逻辑化的连接在一起&#xff0c;把物理磁盘使用逻辑化的方法合并在一起&#xff0c;形成卷组&#xff0c;使得磁盘空间可以公用&#xff1…