大整数(高精度)加减法

高精度加减法(大整数加减法) 高精度加减法是每一位oier都需要掌握的, 他们是一种工具 也是一种对我们程序实现能力(模拟)锻炼 这里介绍一下高精度加减法的原理 首先是加法 通常我们在运算时会列出如下的竖式:(这里举出“10”“9”) 可以看到,我们是按照位置对其进行运算的 在写程序中何尝不是如此呢? 同时,我们也是从最后一位往前加的 那么在存储时,我们何尝不能这么办呢? 在这里,我们可以这样办(假设都不超过1000位,la... 阅读详情

大整数加减法

第一次写,涉及大整数加减运算
先来看看加法,主要思想是逐位相加,进位加1

#include <iostream>
#include <cstring>
using namespace std;
void  add(int a[], int b[],string str1, string str2)
{
   int i, j=0;
   for (i = str1.length() - 1;i >= 0;i--)
       a[j++] = str1[i] - '0';
   j = 0;
   for (i = str2.length() - 1;i >= 0;i--)
       b[j++] = str2[i] - '0';
   for (i = 0;i < 200;i++) //假设正整数最长为200位,根据实际需要调整
   {
       a[i] += b[i];          
       if (a[i] >= 10)      //如果大于等于10则有进位
       {
           a[i] -= 10;      //本位减10
           ++a[i + 1];      //下一位加1
       }
   }
}
void  print(int* a)     //输出控制,多余的0不要输出
{
   int flag = 0;
   for (int i = 200;i >= 0;i--)
   {
       if (flag == 1)
           cout << a[i];
       else if (a[i] != 0)
       {
           cout << a[i];
           flag = 1;
       }
   }
   if (flag == 0)     
       cout << '0';
}
int main()
{
   string str1, str2;
   int a[300] = { 0 }, b[300] = {0};
   //memset(a,0,sizeof(a));      //如此赋0也可以
   //memset(b,0,sizeof(b));
   cin >> str1 >> str2;
   add(a,b,str1,str2);
   print(a);
   return 0;
}

再来看看减法,默认第一个数大于第二个数。
主要思想是逐位相减,不够减借一。

#include <iostream>
#include <cstring>
using namespace std;
void  sub(int a[], int b[], string str1, string str2)
{
    int i, j = 0;
    for (i = str1.length() - 1;i >= 0;i--)
        a[j++] = str1[i] - '0';
    j = 0;
    for (i = str2.length() - 1;i >= 0;i--)
        b[j++] = str2[i] - '0';
    for (i = 0;i < 200;i++) //假设正整数最长为200位,根据实际需要调整
    {
        a[i] -= b[i];
        if (a[i] < 0)       //如果小于0则有借位
        {
            a[i] += 10;     //本位借10
            --a[i + 1];     //下一位减1
        }
    }
}
void  print(int* a)     //输出控制,多余的0不要输出
{
    int flag = 0;
    for (int i = 200;i >= 0;i--)
    {
        if (flag == 1)
            cout << a[i];
        else if (a[i] != 0)
        {
            cout << a[i];
            flag = 1;
        }
    }
    if (flag == 0)
        cout << '0';
}
int main()
{
    string str1, str2;
    int a[300] = { 0 }, b[300] = { 0 };
    cin >> str1 >> str2;
    sub(a, b, str1, str2);
    print(a);
    return 0;
}


高精度计算-大整数加减法 问题描述求两个不超过 200 位的非负整数的和。 输入数据 有两行,每行是一个不超过 200 位的非负整数,没有多余的前导 0。 输出要求 一行,即相加后的结果。结果里不能有多余的前导 0,即如果结果是 342,那么就不能 输出为 0342。输入样例 22222222222222222222 33333333333333333333 输出样例 Output Sample: 555 阅读详情

相关推荐

大整数加减法

普通的计算器在进行大整数的加减法时,可能会因为越界而丢掉后面的数。而该算法可实现两个大整数的加减法运算,能解决以上出现的问题。

大整数的加减乘除运算

本关任务: 掌握大整数的基本思想,并运用大整数的基本运算计算出常规整数n的阶乘,然后统计大整数n!中数字0的个数。 相关知识 为了完成本关任务,你需要掌握:1.大整数的思想,2.大整数加法,3.大整数减法,4.大整数与整数的乘法,5.大整数乘法,6.大整数与整数的除法,7.n的阶乘求解思路。 大整数的思想 大整数的思想:用数组存储大整数(超长整数),为处理简单起见约定每个数组元素存放相同位数(T位)的数字片段(假定T=4位)。 设定一个大小为N的整型数组a[0,1,…,N−1],给定一个大整数9988776

qq_46197017的博客 7278

大整数加减法C/C++源代码

文件提供了大整数加减法源代码,已在visual C++2.0上编译通过

大整数(1000位)的加减乘除运算

正常的加减乘除运算都在long范围内,最大的long long型变量只能存储-2^63 ~ 2^63-1范围内,所以如果给一个1000位的整数运算就无法完成了。所以此时我们需要专门解决大整数运算的问题。

wu496963386的博客 8147

STM407ZET6+OV5640调试心得

最近一个项目用了STMF407ZET6 +OV5640,调试了好几天做些总结; STMF407ZET6 开发板用的是正点原子的开发板,OV5640摄像头用的是秉火摄像头; 这其中有一个大坑,开发板的DCMI接口跟摄像头的接口不一样,要重新用杜邦线进行连接; 本人是在正点原子的“”15,ATK-OV5640摄像头模块“”源码上进行修改的。

kingseacjh的专栏 8325

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

算法设计与分析:大整数的加减乘除运算

为了完成本关任务,你需要掌握:1.大整数的思想,2.大整数加法,3.大整数减法,4.大整数与整数的乘法,5.大整数乘法,6.大整数与整数的除法,7.n的阶乘求解思路。

Shining0596_Limcy 4466

Ubuntu22.04下安装LDAP

在Ubuntu22.04的时候可以使用apt的方式来安装,在安装LDAP的web 服务器的时候可以考虑选择 LDAP 帐户管理器 (LAM)。因为 PHPLDAPadmin 安装时需要 php 的环境依赖,相对来说安装麻烦。此外在 PHPLDAPadmin 中创建组织和用户时与平常的语法有很大不同,对新手来说不友好。

dl_11的博客 3944

高精度计算运用数组进行大整数加减法

高精度计算运用数组进行大整数加减法 a) 涉及知识点:数组、流程控制等 b) 要求:用整型数组表示10进制大整数(超过2^32的整数),数组的每个元素存储大整数的一位数字,实现大整数的加减法。 #include<stdio.h> #include<string.h> int main() { char s1[100],s2[100];//创建两个字符数组 int a[100]={0},b[100]={0},result1[101]={0},result2[101]={0};//

zdl19030的博客 3100

服务器测试之网卡性能调优

nvidia下载mlnx_ofed:https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/intel下载驱动固件:https://www.intel.com/content/www/us/en/download-center/home.html。然而,你可以根据实际情况手动调整中断相关配置。老生常谈了,一些性能相关的设置项打开,节能的关闭,虚拟化相关的VMX/SR-IOV/IOMMU最好也都关掉。

qq_41897488的博客 4907

生物分子仿真软件:AMBER_(17).AMBER在核酸研究中的应用

在使用AMBER进行核酸分子动力学模拟之前,需要对核酸系统进行详细的准备。这包括构建初始结构、添加溶剂分子、中和电荷等步骤。以下将详细介绍这些步骤。

kkchenjj的博客 503

大整数加减法 与 高精度乘除法

会超出long long 运算类型的运算使用传统的方法无法计算,此时此刻就需要使用高精度运算进行这种大整数的运算。使用字符串读入,然后采用数组的形式,将每一位数组倒序存储。 倒序存储的好处 :123456对上述数字进行常规加法运算的话,需要我们从最后一位开始进行运算,如果我们直接倒着存储,就可以变成从第一位开始运算。解题思路:跟小学计算列竖式一样,搞清楚进位情况就行。 注意事项:和列竖式一样,从每个数组的最后一位数字开始往前计算,再判断进位。加法: 减法:具体原理与加法相同,都是列竖式计算;这里我就简

lvquan2006的博客 240

AutoSAR系列讲解(入门篇)1.2-AutoSAR概述

这里主要说明了AutoSAR是个什么,还有其工具链

雪云飞星的博客 5万+

高精度加减法的实现

高精度加减法的实现高精度加减法(大整数加减法)高精度加减法的代码实现 高精度加减法(大整数加减法) 1.使用字符数组存储输入的两个大整数,此时字符数组序号的低位对应着大整数的高位 2.将字符数组中的各位数字字符转换为数字,逆序存储在另一个整型数组里边,这时,数字的低位对应着字符数组的序号低位(即数字的各位存储在字符数组的第0位) 3.之后便可以进行大整数相加与相减了,不过相加注意进位,相减注意借位 4.相减运算需要进行大整数大小比较,用到了strlen与strcmp函数 5.以上建立在两个大整数都是正数的

Hlleo Wrold 618

华为OD机试真题 新系统 2026-04-26 Python&JS 实现【最大化游戏试玩资格分发】

新研发了一台游戏设备可以面向用户接受试玩。现有 n 个试玩申请,每个试玩有开始时间和结束时间。作为协调员,为了能让更多人体验到游戏,你需要对试玩申请进行选择,使得:

MISAYAONE的博客 289

【CANoe示例分析】SOMEIPWithvCDL_16

本示例来源于官方提供的示例工程:0004_基于vCDL实现SOMEIP通信_Demo\0004_基于vCDL实现SOMEIP通信_Demo\SOMEIPWithvCDL。

jasonj333 567

【AcWing】【C++】高精度加减法模板

C++实现大整数加减法。

YGGP的博客 450

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C语言程序设计——前两道题(判断有效三角形和高精度计算的加减法)

刚开始的打算是想等六道题全部写完之后把自己的报告内容粘过来,然后发现ddl还没定,暂时先发布一部分代码,其他的等验收完之后再陆续发布

不羡仙的博客 1248

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

高精度减法

高精度减法

shallrelow的博客 1339

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

算法-----高精度算法1(高精度加法,高精度减法)(详解)

高精度的意思就是他得名字----高的精度,简单说就是位数很大,而高精度算法就是将这些高精度数(位数很大在几百几千几万位的数叫高精度数)通过计算机的型式模拟出来结果。

longxuan01的博客 1190

c++算法系列one:高精度计算&&信息学奥赛一本通1169大整数减法代码

最近这几天,粉丝一直在催更, 回归主题,大家好我是屁孩君。 今天给大家来简单地讲解一下高精度计算。 在c++刷题网站上大家应该都做到过高精度加法,大整数减法,高精度乘法,高精除低精…本想着用long long去解决简单得很,简直就是一道送分题,可是提交一看,what,答案错误,出现一大堆负数。这时的问题就出在那个数大于long long的取值范围,所以才会出现错误。这时,我们就得运用高精度计算了。 1.高精度计算中需要处理好数据的接收与存储方法,数据太长的时候,可以用字符串的形式输入,这样可以利用字符串函

屁孩君的博客呀!! 833

第三十七天 高精度

高精度加法 大概就是储存不下一个大整数,用一个数组把他一位一位存进去,要倒着存,接下来就是小学加减法了。 高精度减法 ps:贪心法名字起的真贴切,每次取最优解,雀氏贪心。 今天的效率一言难尽,周末到周一的作息真难调😔

weixin_73922932的博客 95

大整数加减法运算

#include#includeusing namespace std; void swap(string& str1,string& str2){    if(str1.length()length())    {        string tmp=str1;        str1=str2;        str2=tmp;        return ;    }else    {

378

高精度加减法的应用——试解大数之和

高精度加减法的模板与应用;

weixin_61651242的博客 1740
上一篇: 递归回溯解决八皇后问题C++
下一篇: 全排列DFS实现
原创达人
博客等级 码龄8年 42粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值