洛谷P1601高精度A+B
1. 题目描述
高精度加法,相当于a+b problem,不用考虑负数.
2. Notes
整数与字符的转换
1
2
3
4
5
6//1位非负数转字符(数字2变成字符2)
int a = 2;
char b = a + '0';
//1位字符转非负数(字符3变为数字3)
char b = '3';
int a = b - '0';说明:字符2在计算机内部存的是其
Ascii码
,而数值2在计算机内部存的就是2,因此需要加减转化。处理字符串时试着去尝试用
string类
,string
的每一个基本单元时char
。字符串倒置
1
2// a为1个string对象
reverse(a.begin(),a.end());考虑问题要从特殊到一般,不要上来就考虑一般的问题,觉得特殊的简单不想考虑。特殊的搞定了,就可以把一般的转化为特殊的,或者与之建立某种关系,问题也就解决了。如本题中,先考虑两个数位数相等的情况。
加一行代码的时候,把附近的句子都看一下,在脑子里跑一遍,看看有没有问题,不要想到什么就加什么。
高精加思路:
- 每个数先倒置,
- 对位数短的数补零
- 从数组第一位开始加,每位都要考虑来自低位的进位,然后分别取余取整来确定计算后该位的数值和要进位的数值。
- 最后记得,加完仍然有可能有进位,记得检验(加法中进位最大为1)。
3. 题解
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!