两整数相乘算法

article/2025/8/15 4:18:34

算法需求

求两个整数相乘的算法

算法分析

将前一个数的每一位和后一个数的每一位相乘,因计算过程中涉及到满十进位的问题,所以可以通过判断相乘数的位数进行补零操作来简化这个问题,如下图所示:
在这里插入图片描述

例如计算:84 * 13
第一步计算4 * 13:
4 * 3 = 12(3在个位,不需要补零)
4 * 1 = 4 (1在十位,计算结果需要补1个零,即4*10)
结果:(4 * 1 * 10) + (4 * 3) = 52(4在个位,计算结果不需要补零)

第二步计算8 * 13:
8 * 3 = 24(3在个位,不需要补零)
8 * 1 = 8(1在十位,需要补1个零,即8*10)
结果:(8 * 1 * 10 + 8 * 3) * 10 = 1040(8在十位,计算结果需要补1个零)

最后一步:把上述几步结果值相加
结果:1040 + 52 = 1092

代码实现

// 乘法操作
public static long mutilply(String left, String right) {char[] leftAry = left.toCharArray();char[] rightAry = right.toCharArray();long num = 0;// 第二轮叠加所有的数for (int i = leftAry.length - 1; i >= 0; i--) {long total = 0;int startInt = leftAry[i] - '0';// 第一轮叠加所有的数for (int j = rightAry.length - 1; j >= 0; j--) {int result = 0;int endInt = rightAry[j] - '0';result = startInt * endInt;// 补零操作long buildNum = fillZero(rightAry.length - j - 1);total += result * buildNum;}long buildNum = fillZero(leftAry.length - i - 1);num += total * buildNum;}return num;
}// 补零操作
private static long fillZero(int n) {StringBuilder builder = new StringBuilder();builder.append("1");for (int i = 0; i < n; i++) {builder.append("0");}return Long.parseLong(builder.toString());
}

总结

本算法中使用的数据类型为long,故相乘的结果不能超过2^63-1,否则会出现精度丢失。如果需要更大的整数相乘(无限大),则建议使用数组解决该问题


http://chatgpt.dhexx.cn/article/3R9eK9sn.shtml

相关文章

C++实现——两个大数相乘

#include <iostream> #include <vector> #include <string> using namespace std; //大数相乘 /** *num1 乘数1 *num2 乘数2 *return 结果字符串 */ string BigMutiple(string num1, string num2){string res"";//两个数的位数int m num1.size(),…

两两相乘求和

给定 n 个整数 a_1, a_2, , a_na1​,a2​,⋅⋅⋅,an​ &#xff0c;求它们两两相乘再相加的和&#xff0c;即&#xff1a; 输入格式 输入的第一行包含一个整数 n。 第二行包含 n 个整数。 输出格式 输出一个整数 S&#xff0c;表示所求的和。请使用合适的数据类型进行运…

php 订单自动售货 实现,PHP自动售货发卡网源码 集成多种支付接口

支付接口已集成 支付宝当面付 支付宝PC支付 支付宝手机支付 payjs微信扫码. Paysapi(支付宝/微信). 码支付(QQ/支付宝/微信) 微信企业扫码支付 全网易支付支持(针对彩虹版) 基本环境要求 (PHP PHPCLI) version > 7.0 Nginx version > 1.16 MYSQL version > 5.6 Redis…

php如何做7天后自动售货店,PHP自动售货发卡网源码集成多种支付接口

PHP自动售货发卡网源码 集成多种支付接口 支付接口已集成 支付宝当面付 支付宝PC支付 支付宝手机支付 payjs微信扫码. Paysapi(支付宝/微信). 码支付(QQ/支付宝/微信) 微信企业扫码支付 全网易支付支持(针对彩虹版)基本环境要求 (PHP PHPCLI) version > 7.0 Nginx version …

独角数卡PHP自动化售货发卡网源码下载

源码下载&#xff1a;独角数卡PHP自动化售货发卡网源码-小程序文档类资源-CSDN下载 独角数卡PHP自动化售货发卡网源码 支付接口已集成 支付宝当面付 支付宝PC支付 支付宝手机支付 payjs微信扫码. Paysapi(支付宝/微信). 码支付(QQ/支付宝/微信) 微信企业扫码支付 全网易支付支…

php电商实现自动售货,2020PHP自动售货发卡网程序开源源码 集成多个支付接口

支付接口已集成 支付宝当面付 支付宝PC支付 支付宝手机支付 payjs微信扫码. Paysapi(支付宝/微信). 码支付(QQ/支付宝/微信) 微信企业扫码支付 全网易支付支持(针对彩虹版) 基本环境要求 (PHP PHPCLI) version > 7.0 Nginx version > 1.16 MYSQL version > 5.6 Redis …

个人开发者只要一行代码接入微信支付和支付宝支付

接入支付功能 对于个人开发者来说&#xff0c;我们很希望我们开发的App被广泛使用&#xff0c;同时可以获得一些额外收入&#xff0c;那就更好了。但是在微信开放平台或者支付宝开放平台申请支付功能&#xff0c;需要是企业才可以接入&#xff0c;对于我们个人开发者来说&#…

php皮肤程序,2020修复升级版PHP全新皮肤界面点赞任务系统平台源码运营版,仿众人帮蚂蚁帮扶牛帮...

【温馨提示】源码包解压密码&#xff1a;www.youhutong.com 资源描述 2020修复升级版PHP全新皮肤界面点赞任务系统平台源码运营版,仿众人帮蚂蚁帮扶牛帮 测试环境&#xff1a; php5.6apache2.4mysq5.6 源码介绍&#xff1a; 优化前台UI 及任务功能 前台用户可发布任务【老款只能…

个人支付方案(免签约)-支付宝当面付

背景 作者作为个人开发者&#xff0c;想接入支付功能&#xff0c;所以了解了下目前支付相关的方案&#xff0c;发现大体有以下几种&#xff08;参见xpay&#xff09;&#xff1a; 支付宝和微信官方支付接口&#xff1a;基本都需要企业资格才能开通&#xff0c;最起码也要是个…

支付宝当面付方案(个人免签方案)

作者作为个人开发者&#xff0c;想接入支付功能&#xff0c;所以了解了下目前支付相关的方案&#xff0c;发现大体有以下几种&#xff08;参见xpay&#xff09;&#xff1a; 支付宝和微信官方支付接口&#xff1a;基本都需要企业资格才能开通&#xff0c;最起码也要是个体工商…

个人支付收款接口现状剖析

前言 在国内环境&#xff0c;广大的个人站点及应用&#xff0c;因为业务发展需求&#xff0c;往往需要以个人资质申请对接微信和支付宝的支付渠道。然而现在无论是微信还是支付宝&#xff0c;仅支持具有企业资质的主体申请接口对接&#xff0c;对个人开发者而言&#xff0c;路已…

课程管理

课程管理 121.课程管理-发布课程界面和模型完成122.课程管理-视频云存储讲解123.课程管理-发布课程功能完成124.课程管理-视频加密播放实现125.购买课程-课程订单页面完成126.购买课程-支付宝和微信支付功能准备工作127.购买课程-生成课程订单128.购买课程-配置pycharm同步代码…

视频的上传及购买播放

一、上传视频 1&#xff1a;使用百度云&#xff1a; 登录百度云&#xff1a;https://cloud.baidu.com/ 进入管理控制台&#xff1b;开通 “视频点播VOD” 服务&#xff1b;在后台管理系统 --> 右上角“安全认证” --> 获取 “AccessKey”&#xff1b;在 “视频点播VOD” …

基于SSM bootstrap的JSP MYSQL路路通汽车租赁系统

车辆租赁系统&#xff0c;主要包括对用户的管理&#xff0c;司机的管理&#xff0c;车辆的管理及租赁的管理等四大模块。车辆租用赁系统管理员系统的功能模块设计如图4-1&#xff0c;操作员子系统功能模块图如图4-2所示&#xff1a; 图4-1车辆租赁管理系统管理员操作子系统功能…

PaysApi第三方支付接口的接入与使用 React前端SSM后端

本文实现涉及实现思路以及预期结果 前端React 后端SSM 支付接口PaysApi以及阿里云 正式开始 对比了很多第三方支付接口&#xff0c;选到paysapi也是因为它捕获信息的能力经过测试后还不错&#xff0c;官方接口文档说明的非常清楚 &#xff0c;所以选用&#xff0c;这个demo…

企业微信接入自研小程序流程

一、背景 企业微信是企业内部办公常用的即时通讯工具&#xff0c;可以作为企业内部工作的枢纽&#xff0c;例如&#xff1a;重要内容通知&#xff0c;重要应用的集成等。 二、自研程序接入企业微信配置 1.登录企业微信管理后台https://work.weixin.qq.com/ 2.找到应用管理-…

【微信小程序】小程序发送订阅消息教程

1.订阅消息 订阅消息前身也就是模板消息,使用过模板消息的同学在使用订阅消息的时候就会非常简单了。下面让我们来看一下订阅消息如何使用! 传送门:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html 2.获取模板ID 这个在…

微信小程序的发布流程

当我们开发完小程序后需要做哪些事情才能上线&#xff0c;在小程序搜索到并且可以正常使用呢 首先&#xff0c;需要把http改成https&#xff0c;因为在本地调试的时侯我们在工具不检验合法域名&#xff0c;但是线上的版本必须是https&#xff0c;所以需要后端去申请一下。 然…

发布微信小程序体验版的流程

文章目录 发布微信小程序体验版的流程第一步第二步第三步在微信开发者工具的右上角&#xff0c;点击选择 **上传** ![在这里插入图片描述](https://img-blog.csdnimg.cn/66879544b7ec4cb6ae9c18e84352b79f.png) 第四步第五步总结 发布微信小程序体验版的流程 提示&#xff1a;…

微信小程序发布详细步骤

第一步&#xff1a;检查代码质量 运行微信开发者工具 > 点击详情&#xff0c;选择性能分析&#xff0c;进行代码质量的扫描。 把未通过的部分改改。 第二步&#xff1a;发布体验版 点击上传 > 填写版本号&#xff0c;项目备注 > 点击右下角上传即可 第三步&#xff…