poj1503

来源:互联网 发布:postgresql 海量数据 编辑:程序博客网 时间:2024/05/29 17:04
//poj1503 这个是锻炼我string的加法吧 写得比较龊,本来string b应该不写的#include <iostream>#include <algorithm>#include <cmath>#include <string>using namespace std;int main(){string a;char ans[105];getline(cin, a);string b;int ok = 1;while(a.compare("0") != 0){if(ok == 1){getline(cin, b);ok = 2;}if(b.compare("0") == 0){ok = 3;break;}memset(ans, 0, sizeof(ans));string c;if(a.length() < b.length()){c = a;a = b;b = c;}int carry = 0;int k = 0;int num;c = a;for(int i = 0; i < a.length(); i++){if(i < a.length() - b.length())c[i] = '0';else{c[i] = b[i-a.length()+b.length()];}} //cout<<a<<endl; //cout<<c<<endl;int len1 = a.length();int len2 = c.length();for(int i = len2 - 1; i >= 0; i--){int j = len1 - (len2 - i);num =  (c[i] - '0') + (a[j] - '0') + carry;if(num >= 10){ans[k++] = num % 10 + '0' ;carry = num / 10;}else{ans[k++] = num + '0';carry = 0;}}ans[k++] = carry + '0';b.clear();for(int i = k - 1; i >= 0; i--)b.push_back(ans[i]);getline(cin, a);}if(ok == 1)return 0;else if(ok == 3){int i;for(i = 0; i < a.length(); i++)if(a[i] != '0')break;for(int j = i ; j < a.length(); j++)cout<<a[j];cout<<endl;}else{int i = 0;while(i < b.length() && b[i++] == '0');for(int j = i-1; j < b.length(); j++)cout<<b[j];cout<<endl;}return 0;}

0 0
原创粉丝点击