#include<iostream> #include<vector> #include<algorithm> #include<string> #include<climits> #include<cmath> #include<map> #include<set> #include<queue> using namespace std; int main() { string a, b; while (cin >> a >> b) { if (a.find('.') == a.npos) a += '.'; if (b.find('.') == b.npos) b += '.'; int lena = a.find('.'); int lenb = b.find('.'); while (lena < lenb) { a = '0' + a; lena++; } while (lenb < lena) { b = '0' + b; lenb++; } while (a.size() < b.size()) a += "0"; while (b.size() < a.size()) b += "0"; int pos = a.size() - 1; int flag = 0; string res; while (pos >= 0) { if (a[pos] == '.') { res = "." + res; pos--; continue; } int add = (a[pos] - '0') + (b[pos] - '0'); if (flag == 1) { add++; flag = 0; } if (add >= 10) { add -= 10; flag = 1; } res = to_string(add) + res; pos--; } if (flag == 1) res = "1" + res; if (res.find('.') == res.npos) { cout << res << endl; continue; } flag = 0; pos = res.size() - 1; while (res[pos] != '.') { if (res[pos] != '0') { flag = 1; break; } pos--; } if (flag == 0) { res = res.substr(0, res.find('.')); } else { res = res.substr(0, pos + 1); } cout << res << endl; } } |
Double click to view unformatted code.