本文整理汇总了C++中Bigint::n方法的典型用法代码示例。如果您正苦于以下问题:C++ Bigint::n方法的具体用法?C++ Bigint::n怎么用?C++ Bigint::n使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bigint
的用法示例。
在下文中一共展示了Bigint::n方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Bigint operator * (const Bigint &b) {
Bigint r;
r.resize(len() + b.len() + 1);
r.s = s * b.s;
for (int i=0; i<len(); i++) {
for (int j=0; j<b.len(); j++) {
r.v[i+j] += v[i] * b.v[j];
if(r.v[i+j] >= BIGMOD) {
r.v[i+j+1] += r.v[i+j] / BIGMOD;
r.v[i+j] %= BIGMOD;
}
}
}
r.n();
return r;
}
示例2:
Bigint operator - (const Bigint &b) const {
if(s == -1) return -(-(*this)-(-b));
if(b.s == -1) return (*this)+(-b);
if((*this)<b) return -(b-(*this));
Bigint r;
r.l=l;
for(int i=0;i<l;i++) {
r.v[i]+=v[i];
if(i<b.l) r.v[i]-=b.v[i];
if(r.v[i]<0) {
r.v[i]+=bM;
r.v[i+1]--;
}
}
r.n();
return r;
}
示例3: max
Bigint operator + (const Bigint &b) const {
if (s == -1) return -(-(*this)+(-b));
if (b.s == -1) return (*this)-(-b);
Bigint r;
int nl = max(len(), b.len());
r.resize(nl + 1);
for (int i=0; i<nl; i++) {
if (i < len()) r.v[i] += v[i];
if (i < b.len()) r.v[i] += b.v[i];
if(r.v[i] >= BIGMOD) {
r.v[i+1] += r.v[i] / BIGMOD;
r.v[i] %= BIGMOD;
}
}
r.n();
return r;
}
示例4: len
Bigint operator / (const Bigint &b) {
Bigint r;
r.resize(max(1, len()-b.len()+1));
int oriS = s;
Bigint b2 = b; // b2 = abs(b)
s = b2.s = r.s = 1;
for (int i=r.len()-1; i>=0; i--) {
int d=0, u=BIGMOD-1;
while(d<u) {
int m = (d+u+1)>>1;
r.v[i] = m;
if((r*b2) > (*this)) u = m-1;
else d = m;
}
r.v[i] = d;
}
s = oriS;
r.s = s * b.s;
r.n();
return r;
}