【6. 高精度乘法】

简介: 高精度整数乘以低精度的整数,将`较小的数看成整体`,高精度整数的每一位,依次乘以低精度整数>- 下一位与小的整数相乘,并且再加上进位。> - 去掉前导0,因为结果可能是0123456

高精度乘法

思路:

  • 高精度整数乘以低精度的整数,将较小的数看成整体,高精度整数的每一位,依次乘以低精度整数
  • 下一位与小的整数相乘,并且再加上进位。
  • 去掉前导0,因为结果可能是0123456

具体步骤

  1. 高精度整数A低精度整数b倒序排放在数组中
  2. 高精度整数的每一位,依次乘以低精度整数这个整体。
  3. 考虑进位,(A * b + t) %10 为结果,(A * b + t) / 10为进位.
  4. 去掉前导0,因为结果可能是0123456
  5. 将C中数数字,倒序打印输出。

举例:

1661149558217.png

1661149579051.png

代码

#include <iostream>
#include <vector>
using namespace std;

vector<int> mul(vector<int> &A, int b)
{
   vector<int> C;
   int t = 0;         //最开始的t0 = 0;
   for (int i = 0; i < A.size() || t; i ++)
   {
       if(i < A.size()) t += A[i] * b;
       C.push_back(t % 10);
       t /= 10;
   }
   
   while (C.size() > 1 && C.back() == 0) C.pop_back();  //去掉前导0;
   return C;
}

int main()
{
   string a;
   int b;
   cin >> a >> b;
   
   vector<int>A;
   for (int i = a.size() - 1; i >= 0; i --) A.push_back(a[i] - '0');
   
   auto C = mul(A,b);
   
   for (int i = C.size() - 1; i >= 0; i --)printf("%d", C[i]);
}

核心算法可以改成:

vector<int> mul(vector<int> &A, int b)
{
   vector<int> C;
   int t = 0;         //最开始的t0 = 0;
   for (int i = 0; i < A.size() ; i ++)
   {
       t += A[i] * b;
       C.push_back(t % 10);
       t /= 10;                
   }                            
   if (t != 0) C.push_back(t);   //此时t有多种情况,可能为0(不进位),可能进位为1,也可能进位大于1
                                //加法这里只有俩种情况,要么进位,进位只进 1,要么不进位
   
   while (C.size() > 1 && C.back() == 0) C.pop_back();  //去掉前导0;
   return C;
}
目录
相关文章
|
Rust IDE NoSQL
Clion2022安装破解与激活教程,亲测可用
CLion是JetBrains公司旗下发布的一款跨平台C/C++/Rust IDE开发工具。
14206 1
|
3月前
|
人工智能 安全 API
AI智能体的开发流程
2026年AI智能体开发已迈入工业级:强调确定性、可观测性与多机协作。涵盖五大阶段——需求解构(明边界、定范式)、架构设计(引擎选型+MCP工具集成+Graph-RAG记忆)、SOP编排(CoT+反思循环)、安全围栏(过滤/权限/熔断)及自动化评估(AgentBench+全链路追踪)。工程化能力决定成败。
|
6月前
|
缓存 Windows
win11更新出问题了安装错误 - 0x80070002,问题解决
Win11更新报错0x80070002?常见原因包括系统文件缺失、更新缓存损坏。可通过运行Windows更新疑难解答、清除SoftwareDistribution缓存、使用SFC和DISM命令修复系统文件、手动下载更新或使用微软官方工具(如MediaCreationTool)解决。还可尝试DirectX修复工具等第三方方案,全面排除问题,确保系统顺利更新。
919 0
|
9月前
|
人工智能 JSON 供应链
5C提示词工程框架:让AI成为你的贴心助手
通过清晰度、上下文、命令、链式、持续优化五个维度,教你如何与AI进行高效对话。从小白到专家,一篇文章搞定所有提示词技巧!
773 1
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
3715 0
高精度算法(加、减、乘、除,使用c++实现)
|
分布式计算 DataWorks 大数据
DataWorks
DataWorks 是阿里云推出的一站式智能大数据开发与治理平台,拥有 15 年大数据建设经验,提供 ETL 开发、数据分析及数据资产治理功能,支持 MaxCompute、EMR、Hologres、Flink 和 PAI 等多种计算服务,助力企业实现数据全生命周期管理和价值挖掘。
|
关系型数据库 开发者
|
消息中间件 设计模式 监控
中间件事件总线(Event Bus)
【6月更文挑战第19天】
605 8
|
机器学习/深度学习 运维 算法
利用机器学习进行异常检测的技术实践
【5月更文挑战第16天】本文探讨了利用机器学习进行异常检测的技术实践,强调了在大数据时代异常检测的重要性。机器学习通过无监督、有监督和半监督学习方法自动识别异常,常见算法包括KNN、LOF、K-means和GMM等。异常检测流程包括数据准备、特征工程、选择算法、训练模型、评估优化及部署。机器学习为异常检测提供了灵活性和准确性,但需结合具体问题选择合适方法。
|
Python
【python】在pycharm创建一个新的项目
【python】在pycharm创建一个新的项目
781 0

热门文章

最新文章