【给将来学神的算法详解--高精】(3)A+B Problem
2016-09-08 12:13
330 查看
今天我们要讲的是最简单的a+b问题。。。
不好意思超链接打错了:a+b问题
————————————华丽的分割线————————————
没错我们今天要花一整天来讲愚蠢的A+B Problem。。。qwq
好了恢复正题
题目:见第二个超链接
为了模拟+运算,我们首先要算一算这个东西:
21324+98657(自己乱编的)
首先我们定义两个高精数:
高精数定义:
先想想在mian里面要怎么写
首先我们刚才那个算式是怎么算的?
是不是答案的第i位=a得第i位+b的第i位?
于是我们可以这样搞:
可是还是刚才的算式,用这个东西算第5位时。。。
9+2=11
所以第5位就是11?
好像这个程序少了点什么。。。
没错就是进位!!!
所以我们用x记录进位,把
这时候我们就要判断有没有进位了
有两种方法:
1。判断结果是否>10,若>10
2。记
我们通常用第二种
为什么?
因为以后弄乘法时第一种进位就没用了而写第二种进位可以直接复制粘贴~
要代码戳我
————————————华丽的分割线————————————
愉快的结束了~
下一章讲减法~
不好意思超链接打错了: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
我们通常用第二种
为什么?
因为以后弄乘法时第一种进位就没用了而写第二种进位可以直接复制粘贴~
要代码戳我
————————————华丽的分割线————————————
愉快的结束了~
下一章讲减法~
相关文章推荐
- 【给将来学神的算法详解--高精】(4)对消与还原
- 【给将来学神的算法详解--高精】(7)大大小小&其他符号
- 【给将来学神的算法详解--高精】(1)(我的)高精度模板
- 【给将来学神的算法详解--高精】(8)“高级”高精度函数
- The Skyline Problem轮廓线问题算法详解
- 【给将来学神的算法详解--高精】(6)不可避免的时间复杂度
- 【给将来学神的算法详解--数据结构--线段树】(1)简介
- 【给将来学神的算法详解--数据结构】(1)栈
- 【给将来学神的算法详解--高精】(2)高精的基础
- 【给将来学神的算法详解--高精】(9)输入输出与总结
- 多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(2)数学表述
- BSP技术详解(补充)--------------pvs算法(转载)
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(3)解码过程
- 多级树集合分裂(SPIHT)算法的过程详解与Matlab实现(7)解码过程——扫描解码
- 五子棋算法详解——解决方案之二
- Hash 算法详解
- 多级树集合分裂(SPIHT)算法的过程详解与Matlab实现(8)实例演示
- 嵌入式小波零树(EZW)算法的过程详解和Matlab代码(4)运行示例
- 多级树集合分裂(SPIHT)算法的过程详解和Matlab实现(4)编码过程——排序扫描
- 多级树集合分裂(SPIHT)算法的过程详解与Matlab实现(6)解码过程——主程序