您的位置:首页 > 其它

【给将来学神的算法详解--高精】(3)A+B Problem

2016-09-08 12:13 330 查看
今天我们要讲的是最简单的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,若>10
c.s[i+1]++;


2。记
x=c.s[i]/10,c.s[i]%=10


我们通常用第二种

为什么?

因为以后弄乘法时第一种进位就没用了而写第二种进位可以直接复制粘贴~

要代码戳我

————————————华丽的分割线————————————

愉快的结束了~

下一章讲减法~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐