HDOJ_1002 A + B Problem II

传送门:A + B Problem II

注意:

  字符转数字:减去‘0’

  数字转字符:加上‘0’

  字符串不能直接加数字,可以先转为字符在进行+连接。

#include <iostream>
#include <string>

using namespace std;

string sum(string, string);

int main() {
    int nt;
    cin >> nt;
    for (int i = 1; i <= nt; ++i) {
        string sa, sb;
        cin >> sa >> sb;
        if (i != 1)
            cout << endl;
        cout << "Case " << i << ":" << endl;
        cout << sa << " + " << sb << " = " << sum(sa, sb) << endl;
    }
    return 0;
}

string sum(string sa, string sb) {
    string sres;
    reverse(sa.begin(), sa.end());
    reverse(sb.begin(), sb.end());
    int na, nb, ni = 0;
    for (decltype(sa.size()) i = 0; i < sa.size() || i < sb.size(); ++i) {
        na = i < sa.size() ? sa[i] - '0' : 0;
        nb = i < sb.size() ? sb[i] - '0' : 0;
        ni += na + nb;
        sres += (ni%10 + '0');
        ni /= 10;
    }
    reverse(sres.begin(), sres.end());
    return sres;
}

 

posted @ 2019-11-24 16:03  天涯&海角  阅读(150)  评论(0编辑  收藏  举报