1 条题解
-
0
练72.3 A+B的结果
解题思路
先求和转数字串,从左到右输出;在当前位置右侧还剩3的倍数位且当前位置不是首位时,先插逗号。
正确性说明
依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。
易错点
0正常输出0,首位前不能有逗号。
复杂度
位数D,时间O(D),空间O(D)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); long long a, b; cin >> a >> b; string s = to_string(a + b); for (size_t i = 0; i < s.size(); i++) { if (i > 0 && (s.size() - i) % 3 == 0) cout << ","; cout << s[i]; } cout << "\n"; return 0; }
- 1