HDOJ HDU 1002 Sum Problem

来源:互联网 发布:网络高峰期 编辑:程序博客网 时间:2024/06/16 14:33

HDOJ 1002 Sum Problem

题目

点击查看 HDOJ 1002 Sum Problem

题意

每行两数,求和

难点

大数求和

题解

由于数字很大可用字符串储存
模拟逐位运算即可
这里有一个技巧

  • 字符串逐位相加时如果位数不同,相加时比较麻烦
  • 所以将短的字符串用’0’补齐相加就会方便许多

代码

#include <iostream>#include <string>using namespace std;string add(string & a,string & b);int main(){    int t;    string s1,s2;    cin >> t;    for(int i = 1;i <= t;i++)    {        cin >> s1;        cin >> s2;        s1 = add(s1,s2);        cout << "Case " << i << ":" << endl;        cout << s1 << endl;    }    return 0;}string add(string & a,string & b){//  cout << a << endl << b << endl;    string s;    int t,c = 0;    if(a.length() < b.length())        swap(a,b);    for(int i = b.length();i < a.length();i++)        b.insert(0,"0");    for(int i = 0;i < a.length();i++)        s += '0';    for(int i = a.length()-1;i >= 0;i--)    {        t = (a[i] - '0') + (b[i] - '0') + c;        s[i] = t % 10 + '0';        c = t / 10;    }    if(c)    {        string a;        a += ('0' + c);        s.insert(0,a);    }//  cout << s << endl;    return s;}