前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >大数加法

大数加法

作者头像
用户1154259
发布于 2018-01-17 08:12:09
发布于 2018-01-17 08:12:09
1K00
代码可运行
举报
运行总次数:0
代码可运行

语法:add(char a[],char b[],char s[]);

参数:

a[]: 被乘数,用字符串表示,位数不限

b[]: 乘数,用字符串表示,位数不限

t[]: 结果,用字符串表示

返回值: null

注意:

  空间复杂度为 o(n^2)

  需要 string.h

源程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <string.h>
using namespace std;
void add(char a[],char b[],char back[])
{
    int i,j,k,up,x,y,z,l;
    char *c;
    if(strlen(a)>strlen(b)) 
        l=strlen(a)+2; 
    else 
        l=strlen(b)+2;
    c=(char *) malloc(l*sizeof(char));
    i=strlen(a)-1;
    j=strlen(b)-1;
    k=0;up=0;
    while(i>=0||j>=0)
        {
            if(i<0) 
                x='0'; 
            else 
                x=a[i];

            if(j<0) 
                y='0'; 
            else 
                y=b[j];

            z=x-'0'+y-'0';

            if(up) 
                z+=1;
            if(z>9) 
            {
                up=1;
                z%=10;
            } 
            else 
                up=0;
            c[k++]=z+'0';
            i--;
            j--;
        }
    if(up) 
        c[k++]='1';
    i=0;
    c[k]='\0';
    for(k-=1;k>=0;k--)
        back[i++]=c[k];
    back[i]='\0';
} 
void add(char a[],char b[],char back[]);
int main()
{
    char a[100];
    char b[100];
    char back[100];
    cout<<"请输入两个大数:"<<endl;
    cin>>a>>b;
    add(a,b,back);

    cout<<"大数相加结果是:"<<back<<endl;
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-11-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精度计算-乘法(大数乘大数)
语法:mult(char a[],char b[],char s[]); 参数: a[]: 被乘数,用字符串表示,位数不限 b[]: 乘数,用字符串表示,位数不限 t[]: 结果,用字符串表示 返回值: null 注意:   空间复杂度为 o(n^2)   需要 string.h 源程序: #include <iostream> #include <string.h> using namespace std; void mult(char a[],char b[],char s[]) { int
用户1154259
2018/01/17
8220
大数运算算法汇总_小学减法的运算公式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
5010
精度计算-大数乘小数
语法:mult(char c[],char t[],int m); 参数:   c[]: 被乘数,用字符串表示,位数不限   t[]: 结果,用字符串表示   m: 乘数,限定10以内 返回值: null 注意:   需要 string.h 源程序: #include <stdio.h> #include <stdlib.h> #include <string.h> void mult(char c[],char t[],int m) { int i,l,k,flag,add=0; ch
用户1154259
2018/01/17
8250
acm-大数问题集锦
大数问题,其实就是模拟运算,因为系统自带的int long bouble这些类型无法容纳百位千位的大数字,从而手动模拟运算过程,使用字符串来表示这样的超大数字,如果你会Java的话就简单多了,直接有一个大数类,可以像用函数一样直接调用,不过,那个是大三学滴。
十四君
2019/11/26
1K0
C语言大数运算-乘除法篇「建议收藏」
前言: 这是第三篇博客,也是一次介绍二个计算的博客,可能难度会比前两篇博客大一点,所以建议对于初学者来说一定要看完我的前两篇博客再来看本篇博客,关于本次实验的环境,和思想在第一篇博客已经简单介绍过了,所以不再赘述,我会先介绍大数的乘法载介绍大数的除法,乘法的难点在于要使用一个嵌套循环,除法的难点在于一个字使用符串比较方法的技巧,本次还是会将算法都写成函数,然后在main()函数中调用,原因是在第四篇我们要将整个大数运算的方法做成自己的一个库文件,可以供自己或他人使用。
全栈程序员站长
2022/11/08
1.7K0
C++刷题(三):string
将字符串数字转换成对应整型的方法即:用字符数字的ASCII-‘0’,这道题的难点在于,如何判断边界,处理溢出问题。我们必须在计算前就判断是否越界,因为不管是否储存了表达式的结果,如果计算发生越界,则返回的就是溢出后的数据(即数据不是真实的计算结果,无法按照正常逻辑比较数字大小)。
用户11029137
2025/03/19
420
C++刷题(三):string
Leetcode之string
题目思路: 本题为大数运算类型题目, 不能用于处理大整数的库, 但可以使用一般的算术运算, 我们进行模拟, 首先依次取出每个数字的最后一位,进行加法运算, 并且将值分为进位和数值, 第一次的进位next = 0 , 这里只有当num1和num2都结束才能结束循环, 例如下面999999999+1, 如果其中一个数字已经结束, 则在高位补0, 并且将每一次的值追加到答案字符串, 循环结束, 如果进位还有值, 也追加到结束字符串, 最后逆置字符串.
用户11317877
2024/10/16
740
Leetcode之string
码蹄集新手村100题答案
码蹄集是今年新上线的一个OJ平台,内含了100道基础题和一些百度之星的题目。由于很多题目有原创性,搜不到相关解答,因此我花了两天特将100道题目刷了一遍,目前位居榜二。 码蹄集传送门:https://www.matiji.net/exam/ojquestionlist 前言 所有题目均能AC,不一定是最佳方法,如有其它方法,可在评论区留言讨论。 1、程序设计入门 #include <iostream> using namespace std; int main( ) { cout <
zstar
2022/06/14
6240
码蹄集新手村100题答案
“今天开火车了吗?”——ICPC World Final 队伍的独特训练方法?
总是能听到总决赛的选手们会时常讨论“今天开火车了吗?”,这到底是什么神奇的东西。难道是总决赛队伍所拥有的不为人知的独特训练方法吗?
ACM算法日常
2021/10/18
1.1K0
牛牛的回文串(区间dp)
题目描述 牛牛喜欢回文串,牛妹给了牛牛一个字符串S,牛牛想把S变成回文串 牛牛可以做如下三种操作 1:在任意位置增加一个字符 2:删除一个字符 3:改变一个字符 每种操作都有限定的字符,比如,只能删除'a',增加'b',把'c'变成'd'等等 每种操作都有相应的代价 用M条语句来描述能进行的操作 add c x 表示增加c字符需要x的代价 erase c x表示删除c字符需要x的代价 change c1 c2 x表示将c1 改成c2需要x的代价 求牛牛想要得到回文串需要的最少代价
Fivecc
2022/11/21
2650
HPU第二次积分赛
已知: $$Fibonacci[i]== \begin{cases} i& \text{x<=1}\ Fibonacci[i−1]+Fibonacci[i−2]& \text{x>1} \end{cases}$$ 输入格式 输入包括 T 组,T∈[1,10]. 接下来 T 行,每行两个整数 N,M, 表示斐波那契的第 N 项和第 M 项,(N,M∈[1,1018]). 输出格式 输出包含 T 行,每行输出一个整数. 样例
某些人
2020/04/09
4300
HPU第二次积分赛
[算法题] 大数乘法运算
本文讲述了如何使用大数乘法进行计算的过程,并通过示例演示了如何使用该算法进行计算。
静默虚空
2018/01/05
1.1K0
HDU-4287 Intelligent IME
题目:Intelligent IME Problem Description   We all use cell phone today. And we must be familiar with the intelligent English input method on the cell phone. To be specific, the number buttons may correspond to some English letters respectively, as shown belo
天道Vax的时间宝藏
2021/08/11
2760
C/CPP基础PTA习题及分析
已知素数序列为2、3、5、7、11、13、17、19、23、29……,即素数的第一个是2,第二个是3,第三个是5……那么,随便挑一个数,若是素数,能确定是第几个素数吗?如果不是素数,则输出0。
CtrlX
2023/03/21
7080
Codeforces #567 ABC
A. 个数就不说了,第二个值 有多余的凑起来能再买一个就把还需要钱少的输出否则为0
用户2965768
2019/07/08
7910
C/CPP基础PTA习题及分析
已知素数序列为2、3、5、7、11、13、17、19、23、29……,即素数的第一个是2,第二个是3,第三个是5……那么,随便挑一个数,若是素数,能确定是第几个素数吗?如果不是素数,则输出0。
CtrlX
2022/11/14
1.5K0
ACM札记四
输入一个正整数n(1 <n≤10),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n 个数。
慕白
2018/08/03
1.1K0
ACM札记四
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
键盘随机输入 6 个整数,将这些数据保存到数组中,获取数组中的最小值和最大值并输出。
SarPro
2024/02/20
1640
程序员进阶之算法练习(五十八)
题目链接 题目大意: 输入两个整数a和b,每次操作可以使得a=a+1; 问最少要几次操作,可以使得a可以整除b;
落影
2022/03/07
4950
大数加法运算 c语言_大数加法运算
前言: 本篇博客将分为4到5篇来和大家一块讨论大数的加减乘除,然后再将运算做成一个大数运算库。其中除法较为棘手,但如果作完前三个运算后就没有什么难度了。虽然大多主流的编程语言如java,c++,都有大数运算库,可是c语言标准库并没有提供的大数运算,网上的c语言大数运算大多散而不周或过于复杂,所以本人决定写博客做一些简单的介绍,由于本人水平有限,如有错误或者bug请大家批评指正我会第一时间更正。
全栈程序员站长
2022/11/09
1.7K0
大数加法运算 c语言_大数加法运算
相关推荐
精度计算-乘法(大数乘大数)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档