Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- struct longNumber{
- longNumber(std::vector<unsigned int> init) : digits(init){};
- longNumber(unsigned int a) : digits(std::vector<unsigned int>(a)){};
- std::vector<unsigned int> digits;
- };
- longNumber operator+(const longNumber &a, const longNumber &b){
- longNumber retNum{std::max(a.digits.size(),b.digits.size()) + 1};
- unsigned int step = 0;
- unsigned int rest = 0;
- while(step < a.digits.size() && step < b.digits.size()){
- retNum.digits[step] = (a.digits[step] + b.digits[step] + rest)%10;
- rest = (a.digits[step]+b.digits[step])/10;
- step++;
- }
- if(a.digits.size() > b.digits.size()){
- while(step < a.digits.size()){
- retNum.digits[step] = (a.digits[step] + rest)%10;
- rest = (a.digits[step]+rest)/10;
- step++;
- }
- }else{
- while(step < b.digits.size()){
- retNum.digits[step] = (b.digits[step] + rest)%10;
- rest = (b.digits[step]+rest)/10;
- step++;
- }
- }
- if(retNum.digits[retNum.digits.size()-1] == 0){
- retNum.digits.resize(retNum.digits.size()-1);
- }
- return retNum;
- }
- int main()
- {
- longNumber a{std::vector<unsigned int>{0,0,0,1}};
- longNumber b{std::vector<unsigned int>{0,0,1}};
- longNumber c = a + b;
- for(int i = c.digits.size()-1; i >= 0; i--){
- std::cout << c.digits[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement