【算法详解-高精】(3)A+B Problem

今天我们要讲的是最简单的a+b问题。。。
不好意思超链接打错了:a+b问题
————————————华丽的分割线————————————
没错我们今天要花一整天来讲愚蠢的A+B Problem。。。qwq
好了恢复正题
题目:见第二个超链接
为了模拟+运算,我们首先要算一算这个东西:
21324+98657(自己乱编的)
首先我们定义两个高精数:
高精数定义:

struct bignum
{
    int len,s[maxn];//len=长度,s是储存数的主体
}a,b;

先想想在mian里面要怎么写
首先我们刚才那个算式是怎么算的?
是不是答案的第i位=a得第i位+b的第i位?
于是我们可以这样搞:

for(int i=0;i<c.len;++i)
{
    c.s[i]=s[i]+a.s[i];
}

可是还是刚才的算式,用这个东西算第5位时。。。
9+2=11
所以第5位就是11?
好像这个程序少了点什么。。。
没错就是进位!!!
所以我们用x记录进位,把c.s[i]=s[i]+a.s[i];变成c.s[i]=s[i]+a.s[i]+x;就没了
这时候我们就要判断有没有进位了
有两种方法:
1。判断结果是否>10,若>10c.s[i+1]++;
2。记x=c.s[i]/10,c.s[i]%=10
我们通常用第二种
为什么?
因为以后弄乘法时第一种进位就没用了而写第二种进位可以直接复制粘贴~
要代码戳我
————————————华丽的分割线————————————
愉快的结束了~
下一章讲减法~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值