题目

简单模拟加法运算


解法1

点击查看代码
#include <iostream>
#include <string>
using namespace std;

struct Money {
    int galleon;
    int sickle;
    int knut;
};

Money parseMoney(const string &s) {
    size_t dot1 = s.find('.');
    size_t dot2 = s.find('.', dot1 + 1);
    Money m;
    m.galleon = stoi(s.substr(0, dot1));
    m.sickle = stoi(s.substr(dot1 + 1, dot2 - dot1 - 1));
    m.knut = stoi(s.substr(dot2 + 1));
    return m;
}

Money addMoney(const Money &a, const Money &b) {
    Money sum;
    sum.knut = a.knut + b.knut;
    sum.sickle = a.sickle + b.sickle + sum.knut / 29;
    sum.knut %= 29;
    sum.galleon = a.galleon + b.galleon + sum.sickle / 17;
    sum.sickle %= 17;
    return sum;
}

int main() {
    string A, B;
    cin >> A >> B;
    Money moneyA = parseMoney(A);
    Money moneyB = parseMoney(B);
    Money sum = addMoney(moneyA, moneyB);
    cout << sum.galleon << "." << sum.sickle << "." << sum.knut;
    return 0;
}