|
@@ -106,6 +106,7 @@ struct BigInt{
|
|
}
|
|
}
|
|
inline BigInt& chunkshiftLeft(int c){
|
|
inline BigInt& chunkshiftLeft(int c){
|
|
if(c < 0)return chunkshiftRight(-c);
|
|
if(c < 0)return chunkshiftRight(-c);
|
|
|
|
+ if(c >= size()){std::fill(begin(),end(),0);return *this;}
|
|
auto it1 = data.begin();
|
|
auto it1 = data.begin();
|
|
auto it2 = it1 + c;
|
|
auto it2 = it1 + c;
|
|
while(it2 != data.end())*(it1++) = *(it2++);
|
|
while(it2 != data.end())*(it1++) = *(it2++);
|
|
@@ -114,6 +115,7 @@ struct BigInt{
|
|
}
|
|
}
|
|
inline BigInt& chunkshiftRight(int c){
|
|
inline BigInt& chunkshiftRight(int c){
|
|
if(c < 0)return chunkshiftLeft(-c);
|
|
if(c < 0)return chunkshiftLeft(-c);
|
|
|
|
+ if(c >= size()){std::fill(begin(),end(),0);return *this;}
|
|
auto it1 = data.rbegin();
|
|
auto it1 = data.rbegin();
|
|
auto it2 = it1 + c;
|
|
auto it2 = it1 + c;
|
|
while(it2 != data.rend())*(it1++) = *(it2++);
|
|
while(it2 != data.rend())*(it1++) = *(it2++);
|