|
@@ -42,7 +42,7 @@ struct BigInt{
|
|
|
std::deque<uint64_t> data;
|
|
|
int signum;
|
|
|
inline BigInt() : data(1,0),signum(1){}
|
|
|
- inline BigInt(size_t _s, uint64_t fill) : data(_s,fill), signum(1){}
|
|
|
+ inline BigInt(size_t _s, uint64_t fill) : data(_s, fill), signum(1){}
|
|
|
inline BigInt(int a) : data(1, std::abs(a)),signum(::signum(a)){}
|
|
|
inline BigInt(unsigned int a) : data(1, a),signum(1){}
|
|
|
inline BigInt(unsigned long long a) : data(1, a), signum(1){}
|
|
@@ -51,6 +51,17 @@ struct BigInt{
|
|
|
inline BigInt(std::initializer_list<uint64_t>&& l) : data(std::move(l)), signum(1){}
|
|
|
inline BigInt(const BigInt& o) : data(o.data), signum(o.signum){}
|
|
|
inline BigInt(BigInt&& o) : data(std::move(o.data)), signum(o.signum){}
|
|
|
+ inline BigInt(const std::string& o){
|
|
|
+ auto it = o.rbegin();
|
|
|
+ BigInt baseTen(1);
|
|
|
+ while(it != o.rend()){
|
|
|
+ BigInt l = baseTen.mult(BigInt(*it - '0'));
|
|
|
+ adda(l);
|
|
|
+ baseTen = baseTen.mult(BigInt(10));
|
|
|
+ ++it;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
template<typename InputIterator>
|
|
|
inline BigInt(InputIterator begin, InputIterator end) : data(begin, end), signum(1){}
|
|
|
template<typename RNG>
|