当前位置: 首页>>代码示例>>C++>>正文


C++ bigint::abs方法代码示例

本文整理汇总了C++中bigint::abs方法的典型用法代码示例。如果您正苦于以下问题:C++ bigint::abs方法的具体用法?C++ bigint::abs怎么用?C++ bigint::abs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bigint的用法示例。


在下文中一共展示了bigint::abs方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: make_pair

  friend pair<bigint, bigint> divmod(const bigint &a1, const bigint &b1) {
    int norm = base / (b1.a.back() + 1);
    bigint a = a1.abs() * norm;
    bigint b = b1.abs() * norm;
    bigint q, r;
    q.a.resize(a.a.size());
 
    for (int i = a.a.size() - 1; i >= 0; i--) {
      r *= base;
      r += a.a[i];
      int s1 = r.a.size() <= b.a.size() ? 0 : r.a[b.a.size()];
      int s2 = r.a.size() <= b.a.size() - 1 ? 0 : r.a[b.a.size() - 1];
      int d = ((long long) base * s1 + s2) / b.a.back();
      r -= b * d;
      while (r < 0)
  r += b, --d;
      q.a[i] = d;
    }
 
    q.sign = a1.sign * b1.sign;
    r.sign = a1.sign;
    q.trim();
    r.trim();
    return make_pair(q, r / norm);
  }
开发者ID:wifai,项目名称:competitive-programming,代码行数:25,代码来源:cryptopangrams.cpp

示例2: divmod

    friend pair<bigint, bigint> divmod(const bigint &a1, const bigint &b1) {
        int norm = base / (b1.z.back() + 1);
        bigint a = a1.abs() * norm;
        bigint b = b1.abs() * norm;
        bigint q, r;
        q.z.resize(a.z.size());

        for (int i = (int) a.z.size() - 1; i >= 0; i--) {
            r *= base;
            r += a.z[i];
            int s1 = b.z.size() < r.z.size() ? r.z[b.z.size()] : 0;
            int s2 = b.z.size() - 1 < r.z.size() ? r.z[b.z.size() - 1] : 0;
            int d = (int) (((long long) s1 * base + s2) / b.z.back());
            r -= b * d;
            while (r < 0)
                r += b, --d;
            q.z[i] = d;
        }

        q.sign = a1.sign * b1.sign;
        r.sign = a1.sign;
        q.trim();
        r.trim();
        return {q, r / norm};
    }
开发者ID:torcop,项目名称:test-project,代码行数:25,代码来源:10055.cpp

示例3:

 bigint operator-(const bigint &v) const {
   if (sign == v.sign) {
     if (abs() >= v.abs()) {
 bigint res = *this;
 for (int i = 0, carry = 0; i < (int) v.a.size() || carry; ++i) {
   res.a[i] -= carry + (i < (int) v.a.size() ? v.a[i] : 0);
   carry = res.a[i] < 0;
   if (carry)
     res.a[i] += base;
 }
 res.trim();
 return res;
     }
     return -(v - *this);
   }
   return *this + (-v);
 }
开发者ID:wifai,项目名称:competitive-programming,代码行数:17,代码来源:cryptopangrams.cpp


注:本文中的bigint::abs方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。