超精读运算之大整数相加
2017-03-27 02:40
183 查看
话不多说,代码贴上。
其中有关把单个字符转换为对应整型数得办法,直接(int)取其ASCLL码值再减去48即可。注意,不能用atoi(str)函数,因为它是直接把一整个字符串转为整型数,而非单个字符,str是个字符数组得首地址。。
其中有关把单个字符转换为对应整型数得办法,直接(int)取其ASCLL码值再减去48即可。注意,不能用atoi(str)函数,因为它是直接把一整个字符串转为整型数,而非单个字符,str是个字符数组得首地址。。
#include <bits/stdc++.h> using namespace std; void displaySum( const string &s1 , const string &s2 , vector <int> &sum ){ int i=0, j=0; for( i=s1.size()-1; i>=0; --i) sum.push_back( (int)s1[ i ] - 48 );// 反序存储 for( i=s2.size()-1, j=0; i>=0 && j<sum.size() ; --i,++j ) sum[ j ] += (int)s2[ i ] - 48 ; while( i>= 0 ) sum.push_back( (int)s2[ i--] - 48 ) ; for( i=0; i<sum.size(); ++i ) if( sum[ i ]>9 ){ if( i == sum.size()-1 ){ sum.push_back( sum[ i ]/10 ) ; sum[ i ] %= 10 ; } else{ sum[ i+1 ] += sum[ i ]/10 ; sum[ i ] %= 10 ; } } for( i=sum.size()-1; i>=0; --i ) printf("%d",sum[ i ] ) ; printf("\n") ; sum.clear() ; } int main(){ string s1, s2 ; vector <int> sum; while( cin>>s1>>s2 ) displaySum( s1, s2, sum ) ; return 0; }
相关文章推荐
- 利用位运算实现两个整数相加
- 位运算实现整数相加
- 使用与或运算完成两个整数的相加
- 算法--两种方法实现一个Add函数,让两个整数相加,但是不能使用+、-、*、/等四则运算符。
- 九度OJ 1119:Integer Inquiry(整数相加) (大数运算)
- 长整数相加运算(内含减法)。。= =
- 九度OJ 1119:Integer Inquiry(整数相加) (大数运算)
- 位运算实现两个整数相加
- poj之2981大整数相加
- 大整数运算
- 华为机试通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串
- 判断两个64位无符号整数a和b相加是否溢出
- 位运算求两个整数的平均值
- 判断整数k(k<1000)能被两个质数相加的组合(低效率 求高效率的方法)
- 10.N个整数中查找是否相加为K[深度搜索]
- 超长整数的基础运算 算法实现之进制转换篇
- 大整数相加
- 在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合
- 稀疏矩阵三元组的相加相乘运算
- POJ 1503 大整数相加的问题