BigInteger operator / (const BigInteger& b) const {
     assert(b > 0);  // 除数必须大于0
     BigInteger c = *this;       // 商:主要是让c.s和(*this).s的vector一样大
     BigInteger m;               // 余数:初始化为0
     for (int i = s.size()-1; i >= 0; i--) {
         m = m*BASE + s[i];
         c.s[i] = bsearch(b, m);
         m -= b*c.s[i];
     }
     return c.clean();
 }
 BigInteger operator - (const BigInteger& b) const {
     assert(b <= *this); // 减数不能大于被减数
     BigInteger c; c.s.clear();
     for (int i = 0, g = 0; ; i++) {
         if (g == 0 && i >= s.size() && i >= b.s.size()) break;
         int x = s[i] + g;
         if (i < b.s.size()) x -= b.s[i];
         if (x < 0) {g = -1; x += BASE;} else g = 0;
         c.s.push_back(x);
     }
     return c.clean();
 }
 BigInteger operator * (const BigInteger& b) const {
     int i, j; LL g;
     vector<LL> v(s.size()+b.s.size(), 0);
     BigInteger c; c.s.clear();
     for(i=0;i<s.size();i++) for(j=0;j<b.s.size();j++) v[i+j]+=LL(s[i])*b.s[j];
     for (i = 0, g = 0; ; i++) {
         if (g ==0 && i >= v.size()) break;
         LL x = v[i] + g;
         c.s.push_back(x % BASE);
         g = x / BASE;
     }
     return c.clean();
 }