-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2.cpp
More file actions
62 lines (49 loc) · 1.82 KB
/
2.cpp
File metadata and controls
62 lines (49 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <cmath>
#include <iostream>
class ReversedNum {
private:
int number;
ReversedNum* delnull() { //delete extra nulls
while(!number%10)
number/=10;
return this;
}
int length() { //returns length of the number
return int(ceil(log10(number)));
}
public:
int shownum() { //returns the number
return number;
}
ReversedNum(int a): number(a) {delnull();}; //initializing constructor
ReversedNum operator + (ReversedNum& secoper) { //overloaded new rules plus operation
bool overload = false;
int temp = 0, result = 0, num2, places[]={this->length(), secoper.length()};
num2 = secoper.shownum();
while((places[0]>0)||(places[1]>0)||overload){
temp = int(double(number)/pow(10, --places[0]))%10 + int(double(num2)/pow(10, --places[1]))%10; //highest digits sum, second highest digits sum and so on
if (overload) temp++;
if (temp/10) overload = true;
else overload = false;
result = result*10 + temp%10; //creating new number
temp = 0;
}
return ReversedNum(result);
};
};
int main(){
int times;
std::cin >> times;
while(times--){
int foper, soper;
ReversedNum* a;
ReversedNum* b;
std::cin >> foper >> soper; //entering operands
a = new ReversedNum(foper);
b = new ReversedNum(soper);
std::cout << (*a+*b).shownum() << '\n'; //overloaded plus operating and outputting value
delete a, b;
}
return 0;
}