-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReallyLongInt.hpp
71 lines (43 loc) · 1.71 KB
/
ReallyLongInt.hpp
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
63
64
65
66
67
68
69
70
71
#ifndef REALLYLONGINT_HPP
#define REALLYLONGINT_HPP
#include <string>
using namespace std;
class ReallyLongInt
{
public:
ReallyLongInt();
ReallyLongInt(long long num);
ReallyLongInt(const string& numStr);
ReallyLongInt(const ReallyLongInt& other);
~ReallyLongInt();
string toString() const;
string toStringBinary() const;
bool equal (const ReallyLongInt& other) const;
bool greater(const ReallyLongInt& other) const;
void removeLeadingZeros(void);
ReallyLongInt& operator=(const ReallyLongInt& other);
ReallyLongInt absAdd(const ReallyLongInt& other) const;
ReallyLongInt absSub(const ReallyLongInt& other) const;
ReallyLongInt add(const ReallyLongInt& other) const;
ReallyLongInt sub(const ReallyLongInt& other) const;
ReallyLongInt operator-() const;
ReallyLongInt mult(const ReallyLongInt& other) const;
void div(const ReallyLongInt& other, ReallyLongInt& quotient, ReallyLongInt& remainder) const;
ReallyLongInt exp(ReallyLongInt e) const;
bool isPrime();
//private:
bool isNeg;
unsigned int size;
vector<bool> *digits;
bool absGreater(const ReallyLongInt& other) const;
void swap(ReallyLongInt other);
ReallyLongInt absMult(const ReallyLongInt& other) const;
void flipSign();
void absDiv(const ReallyLongInt& other, ReallyLongInt& quotient, ReallyLongInt& remainder) const;
};
#endif
ReallyLongInt operator+(const ReallyLongInt& x,const ReallyLongInt& y);
ReallyLongInt operator-(const ReallyLongInt& x,const ReallyLongInt& y);
ReallyLongInt operator*(const ReallyLongInt& x,const ReallyLongInt& y);
ReallyLongInt operator/(const ReallyLongInt& x,const ReallyLongInt& y);
ReallyLongInt operator%(const ReallyLongInt& x,const ReallyLongInt& y);