题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805263297527808
坑点在如果一个没都没输出,那么最后要输出0,否则最后一个测试点会挂

代码

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<string>
  4. #include<vector>
  5. #include<algorithm>
  6. using namespace std;
  7. int main(){
  8. string table, a, b;
  9. int carry = 0;
  10. vector<int> ans;
  11. cin>>table>>a>>b;
  12. int max_len = max(table.size(), max(a.size(), b.size()));
  13. //全部补零
  14. while(table.size() != max_len) table.insert(0, "0");
  15. while(a.size() != max_len) a.insert(0, "0");
  16. while(b.size() != max_len) b.insert(0, "0");
  17. //开始计算
  18. for(int i = max_len - 1; i >= 0; i--){
  19. int fenmu = (table[i] - '0');
  20. if(fenmu == 0) fenmu = 10;
  21. int temp = (a[i] - '0' + b[i] - '0' + carry) % fenmu;
  22. carry = (a[i] - '0' + b[i] - '0' + carry) / fenmu;
  23. ans.push_back(temp);
  24. }
  25. ans.push_back(carry);
  26. int flag = 0;
  27. for(int i = ans.size() - 1; i >= 0; i--){
  28. if(ans[i] == 0 && flag == 0){
  29. continue;
  30. } else {
  31. cout<<ans[i];
  32. flag = 1;
  33. }
  34. }
  35. if(flag == 0) printf("%d", 0);
  36. return 0;
  37. }