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


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

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


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

示例1: pow

bigint pow (const bigint& base, const bigint& exponent) {
    DEBUGF ('^', "base = " << base << ", exponent = " << exponent);
    if (base == 0) return 0;
    bigint base_copy = base;
    long expt = exponent.to_long();
    //long_max
    if(expt > 2147483647) {
        throw range_error ("Exponent cannot fit");
    }
    bigint result = bigint("1");
    if (expt < 0) {
        base_copy = 1 / base_copy;
        expt = - expt;
    }
    while (expt > 0) {
        if (expt & 1) { //odd
            result = result * base_copy;
            --expt;
        } else { //even
            base_copy = base_copy * base_copy;
            expt /= 2;
        }
    }
    DEBUGF ('^', "result = " << result);
    return result;
}
开发者ID:androbbi,项目名称:CMPS-109-Advanced-Programming,代码行数:26,代码来源:bigint.cpp

示例2: pow

bigint pow (const bigint& base, const bigint& exponent) {
   DEBUGF ('^', "base = " << base << ", exponent = " << exponent);
   if (base == 0) return 0;
   bigint base_copy = base;
   long expt = exponent.to_long();
   bigint result = 1;
   if (expt < 0) {
      base_copy = 1 / base_copy;
      expt =  - expt;
   }
   while (expt > 0) {
      if (expt & 1) { //odd
         result = result * base_copy;
         --expt;
      }else { //even
         base_copy = base_copy * base_copy;
         expt /= 2;
      }
   }
   DEBUGF ('^', "result = " << result);
   return result;
}
开发者ID:gmmack,项目名称:Advanced-Programming-C--CS109,代码行数:22,代码来源:bigint.cpp


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