我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

思想

首先确定乘积的位数。

假设两个非负整数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++ 高精度乘法运算内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

本文主要介绍了C++高精度乘法运算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-13

C/C++高精度(加减乘除)算法的实现

高精度的算法,一般的方式是用一个很长的数组去记录数据,数组的每一位记录固定位数的数字,记录顺序是低位到高位。本文将通过实例为大家介绍下高精度算法的实现,感兴趣的可以了解一下
2022-12-15

python实现高精度乘法

方法是将两个乘数转为两个包含乘数每位数字的list, 因为在计算中两个list中的数据要反复使用,所以定义第三个list来保存乘法的运算结果,然后使用两重循序模拟列竖式计算出乘法运算的结果, 因为乘法运算每次运算时需要向前移动一位表示扩大
2023-01-31

详解C/C++高精度算法的简单实现

这篇文章主要为大家详细介绍了C/C++中高精度算法(加减乘除)的简单实现,方便以后需要时拷贝使用。感兴趣的小伙伴可以跟随小编一起了解一下
2022-12-15

详解C/C++高精度(加减乘除)算法中的压位优化

在高精度计算中数组的每个元素存储一位10进制的数字,这样的存储方式并不是最优的,32位的整型其实至少可以存储9位高精度数字,数组元素存储更多的位数就是压位优化。本文将展示压位优化的原理以及压9位的实现和性能对比,需要的可以参考一下
2023-01-31

C/C++高精度运算(大整数运算)详细讲解

高精度算法的本质是把大数拆成若干固定长度的块,然后对每一块进行相应的运算,下面这篇文章主要给大家介绍了关于C/C++高精度运算(大整数运算)的相关资料,需要的朋友可以参考下
2022-11-13

php怎么实现乘法运算

在PHP中,可以利用“*”算术运算符实现乘法运算,该运算符用于计算前后两个数的乘积,语法为“乘数1*乘数2”。
2015-11-01

php如何实现乘法运算

本篇内容主要讲解“php如何实现乘法运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现乘法运算”吧!在PHP中,可以利用“*”算术运算符实现乘法运算,该运算符用于计算前后两个数的乘
2023-06-29

Java怎么用位运算实现乘法运算

这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。十进制相乘例如,26 * 15,在进行乘法
2023-07-06

Java利用位运算实现乘法运算详解

这篇文章主要为大家详细介绍了Java如何用位运算实现乘法运算,在实现乘法时要用位运算实现,并且不能出现加减乘除任何符号,感兴趣的可以了解一下
2023-05-15

提高Ruby数学运算精度的技巧

提升Ruby数学运算精度的秘籍在软件开发的世界里,精确性是至关重要的。无论是在处理用户输入、计算数据还是在生成报告时,一个精确的结果都是成功的关键。而Ruby语言,以其优雅和强大的功能,已经成为了众多开发者的首选工具。但是,你是否曾经遇到过因为浮点数计算不准确而导致的问题
提高Ruby数学运算精度的技巧
ruby2024-12-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录