Advertisement
Guest User

Untitled

a guest
Mar 20th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. struct longNumber{
  3. longNumber(std::vector<unsigned int> init) : digits(init){};
  4. longNumber(unsigned int a) : digits(std::vector<unsigned int>(a)){};
  5. std::vector<unsigned int> digits;
  6. };
  7.  
  8. longNumber operator+(const longNumber &a, const longNumber &b){
  9. longNumber retNum{std::max(a.digits.size(),b.digits.size()) + 1};
  10. unsigned int step = 0;
  11. unsigned int rest = 0;
  12. while(step < a.digits.size() && step < b.digits.size()){
  13. retNum.digits[step] = (a.digits[step] + b.digits[step] + rest)%10;
  14. rest = (a.digits[step]+b.digits[step])/10;
  15. step++;
  16. }
  17. if(a.digits.size() > b.digits.size()){
  18. while(step < a.digits.size()){
  19. retNum.digits[step] = (a.digits[step] + rest)%10;
  20. rest = (a.digits[step]+rest)/10;
  21. step++;
  22. }
  23. }else{
  24. while(step < b.digits.size()){
  25. retNum.digits[step] = (b.digits[step] + rest)%10;
  26. rest = (b.digits[step]+rest)/10;
  27. step++;
  28. }
  29. }
  30. if(retNum.digits[retNum.digits.size()-1] == 0){
  31. retNum.digits.resize(retNum.digits.size()-1);
  32. }
  33. return retNum;
  34. }
  35. int main()
  36. {
  37. longNumber a{std::vector<unsigned int>{0,0,0,1}};
  38. longNumber b{std::vector<unsigned int>{0,0,1}};
  39. longNumber c = a + b;
  40. for(int i = c.digits.size()-1; i >= 0; i--){
  41. std::cout << c.digits[i];
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement