广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++高精度乘法运算的实现
  • 575
分享到

C++高精度乘法运算的实现

C++高精度乘法运算C++高精度乘法 2023-01-13 12:01:31 575人浏览 薄情痞子
摘要

目录思想代码思想 首先确定乘积的位数。 假设两个非负整数a和b,n1为a的长度(位数),n2为b的位数,记n为c=a*b的位数,则有: 计算两个乘数每位数字的乘积,其中a[i]乘b

思想

首先确定乘积的位数。

假设两个非负整数a和b,n1为a的长度(位数),n2为b的位数,记n为c=a*b的位数,则有:

计算两个乘数每位数字的乘积,其中a[i]乘b[j]累加到c[i+j]上去

在最后对累加结果数组c作一次性进位(判断是否大于等于10)

代码

知道上述原理,很容易就写出代码

#include <iOStream>
#include <string>
#include <alGorithm>
#include <string.h>

using namespace std;
int main()
{
    //输入时处理,包含置0、逆置、转换成真实数字等步骤
    string s;
    cin >> s;
    int n1 = s.length();    //长度
    char str1[10];
    memset(str1, 0, sizeof(str1));
    for (int i = 0; i < n1;i++)
        str1[i] = s[n1 - i - 1]-'0';
    
    string s2;
    cin >> s2;
    int n2 = s2.length();
    char str2[10];
    memset(str2, 0, sizeof(str2));
    for (int i = 0; i < n2;i++)
        str2[i] = s2[n2 - i - 1]-'0';


    char res[20];
    memset(res, 0, sizeof(res));

    //核心代码
    int i, j;
    for (i = 0; i < n1;i++)
        for (j = 0; j < n2;j++)
            res[i + j] += str1[i] * str2[j];

    for (i = 0; i < n1 + n2;i++)
    {
        if(res[i]>=10)
        {
            res[i + 1] += res[i] / 10;
            res[i] %= 10;
        }

    }

    //从不为0的那一位开始输出(删除前导0),如果全部为0,则输出0
    int k;
    for (k = n1 + n2 - 1; !res[k]&&k>0; k--)
        ;   //注意这个分号

    for (int i = k; i >= 0; i--)
        cout << int(res[i]);
    cout << endl;


    return 0;
}

到此这篇关于c++ 高精度乘法运算的实现的文章就介绍到这了,更多相关C++ 高精度乘法运算内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++高精度乘法运算的实现

本文链接: https://www.lsjlt.com/news/177616.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++高精度乘法运算的实现
    目录思想代码思想 首先确定乘积的位数。 假设两个非负整数a和b,n1为a的长度(位数),n2为b的位数,记n为c=a*b的位数,则有: 计算两个乘数每位数字的乘积,其中a[i]乘b...
    99+
    2023-01-13
    C++ 高精度乘法运算 C++ 高精度乘法
  • C/C++高精度(加减乘除)算法的实现
    目录前言一、必要的参数二、辅助函数三、实现加减乘除1、加法2、减法3、乘法4、除法四、使用例子1、加法例子2、减法例子3、乘法例子4、除法例子前言 C/C++基本类型做算术运算时长度...
    99+
    2022-12-15
    C++实现高精度算法 C++高精度算法 C语言 高精度算法
  • python实现高精度乘法
    方法是将两个乘数转为两个包含乘数每位数字的list, 因为在计算中两个list中的数据要反复使用,所以定义第三个list来保存乘法的运算结果,然后使用两重循序模拟列竖式计算出乘法运算的结果, 因为乘法运算每次运算时需要向前移动...
    99+
    2023-01-31
    乘法 python
  • 详解C/C++高精度算法的简单实现
    目录前言一、基本原理二、辅助方法1、字符串转高精度2、整型转高精度3、比较4、打印三、算法实现1、加法2、减法3、乘法4、除法四、使用示例1、加法2、减法3、乘法4、除法总结前言 由...
    99+
    2022-12-15
    C++实现高精度算法 C++高精度算法 C语言 高精度算法
  • 详解C/C++高精度(加减乘除)算法中的压位优化
    目录前言一、基本原理1、存储方式2、计算方式二、完整代码三、性能对比总结附录 1、性能测试代码前言 由于上一章《C/C++ 高精度(加减乘除)算法简单实现》实现了基本的高精度计算,数...
    99+
    2023-01-31
    C++压位优化原理 C++压位优化 C++ 优化
  • C/C++高精度运算(大整数运算)详细讲解
    目录前言什么是大整数 大整数的表示大整数的运算1、高精度加法2、高精度减法3、高精度乘以低精度4、高精度除以低精度大整数的表示补充:使用示例总结前言 高精度的运算在算法题尤...
    99+
    2022-11-13
    c++ 高精度计算 c++高精度加法 c语言大整数运算
  • C语言实现高精度的加法
    本文实例为大家分享了C语言实现高精度的加法,供大家参考,具体内容如下 由键盘输入两个位数很长的整数(一行一个,最多不超过80位),试计算并输出这两个数的和。 输入样例 1234567...
    99+
    2022-11-12
  • C语言实现高精度加法
    本篇为高精度加法的计算,接下来我还会去写高精度乘法的计算。 一、高精度运算的概念 高精度运算其实就是参与运算的数完全超出基本数据类型所能表示的范围的运算(例如int型范围就是 - 2...
    99+
    2022-11-12
  • C语言实现高精度加减法
    本文实例为大家分享了C语言实现高精度加减法的具体代码,供大家参考,具体内容如下 首先,我们来看一下C语言中各类型的最值: unsigned int 0~4294967295 int ...
    99+
    2022-11-12
  • Java怎么用位运算实现乘法运算
    这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。十进制相乘例如,26 * 15,在进行乘法...
    99+
    2023-07-06
  • php怎么实现乘法运算
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php怎么实现乘法运算运算符是指通过一个或多个表达式来产生另外一个值的某些符号,如“+”、“%”、“.”等都是运算符。在表达式 2+1 中,运算符“+”有两个操作数,...
    99+
    2015-11-01
    PHP
  • php如何实现乘法运算
    本篇内容主要讲解“php如何实现乘法运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现乘法运算”吧!在PHP中,可以利用“*”算术运算符实现乘法运算,该运算符用于计算前后两个数的乘...
    99+
    2023-06-29
  • C++高精度算法的使用场景详解
    目录描述1. 高精度加法1. 思路2. 代码2. 高精度减法1. 思路2. 代码3. 如果出现被减数的位数小于减数时呢描述 如果要计算的数超过了long long怎么解决 &mdas...
    99+
    2022-11-13
  • Java利用位运算实现乘法运算详解
    目录前言正文十进制相乘二进制相乘思路分析代码实现总结前言 在上一篇中,我们介绍了使用位运算实现加法和减法运算,接下来本文主要介绍如何用位运算实现乘法运算,在实现乘法时要用位运算实现,...
    99+
    2023-05-15
    Java位运算实现乘法运算 Java位运算 乘法运算 Java位运算
  • C++使用cuBLAS加速矩阵乘法运算的实现代码
    本博客主要参考cuBLAS 库 词条实现,与原文不同的是,本博客: 将cuBLAS库的乘法运算进行了封装,方便了算法调用; 将原文的结果转置实现为了不转置,这样可以...
    99+
    2022-11-12
  • C语言如何使用移位实现乘除法运算
    这篇文章主要为大家展示了“C语言如何使用移位实现乘除法运算”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用移位实现乘除法运算”这篇文章吧。移位实现乘...
    99+
    2022-10-19
  • Java 高精度的大数字运算方式
    目录Java 高精度的大数字运算高精度整数BigInteger高精度浮点数BigDecimal(1)BigInteger和BigDecimal都是不可变(immutable)(2)B...
    99+
    2022-11-12
  • C++重载运算符实现分数加减乘除
    本文实例为大家分享了C++重载运算符实现分数加减乘除的具体代码,供大家参考,具体内容如下 实现结果如下图所示: 代码如下所示: #include <iostream>...
    99+
    2022-11-12
  • 如何实现大整数乘法运算与分治算法
    本篇内容主要讲解“如何实现大整数乘法运算与分治算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现大整数乘法运算与分治算法”吧!普通乘数运算对于乘数运算有...
    99+
    2022-10-19
  • 怎么在python中实现矩阵乘法运算
    今天就跟大家聊聊有关怎么在python中实现矩阵乘法运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作