|
@@ -19,6 +19,7 @@ template<typename T>
|
|
inline int signum(T t){
|
|
inline int signum(T t){
|
|
if(t < 0)return -1;
|
|
if(t < 0)return -1;
|
|
if(t >= 0)return 1;
|
|
if(t >= 0)return 1;
|
|
|
|
+ assert(false);
|
|
}
|
|
}
|
|
inline std::ostream& operator<<(std::ostream& out, __uint128_t o){
|
|
inline std::ostream& operator<<(std::ostream& out, __uint128_t o){
|
|
if(o == 0)return out << "0";
|
|
if(o == 0)return out << "0";
|
|
@@ -65,10 +66,12 @@ struct BigInt{
|
|
BigInt& operator=(const BigInt& o){
|
|
BigInt& operator=(const BigInt& o){
|
|
data = o.data;
|
|
data = o.data;
|
|
signum = o.signum;
|
|
signum = o.signum;
|
|
|
|
+ return *this;
|
|
}
|
|
}
|
|
BigInt& operator=(BigInt&& o){
|
|
BigInt& operator=(BigInt&& o){
|
|
data = std::move(o.data);
|
|
data = std::move(o.data);
|
|
signum = o.signum;
|
|
signum = o.signum;
|
|
|
|
+ return *this;
|
|
}
|
|
}
|
|
uint64_t& operator[](size_t i){return data[i];}
|
|
uint64_t& operator[](size_t i){return data[i];}
|
|
const uint64_t& operator[](size_t i)const{return data[i];}
|
|
const uint64_t& operator[](size_t i)const{return data[i];}
|