本文整理汇总了C++中Bigint::normalize方法的典型用法代码示例。如果您正苦于以下问题:C++ Bigint::normalize方法的具体用法?C++ Bigint::normalize怎么用?C++ Bigint::normalize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Bigint
的用法示例。
在下文中一共展示了Bigint::normalize方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Bigint operator + ( Bigint b ) {
if( sign != b.sign ) return (*this) - b.inverseSign();
Bigint c;
for(int i = 0, carry = 0; i<a.size() || i<b.size() || carry; i++ ) {
carry+=(i<a.size() ? a[i]-48 : 0)+(i<b.a.size() ? b.a[i]-48 : 0);
c.a += (carry % 10 + 48);
carry /= 10;
}
return c.normalize(sign);
}
示例2:
Bigint operator - ( Bigint b ) {
if( sign != b.sign ) return (*this) + b.inverseSign();
if( (*this) < b ) return (b - (*this)).inverseSign();
Bigint c;
for( int i = 0, borrow = 0; i < (int)a.size(); i++ ) {
borrow = a[i] - borrow - (i < b.size() ? b.a[i] : 48);
c.a += borrow >= 0 ? borrow + 48 : borrow + 58;
borrow = borrow >= 0 ? 0 : 1;
}
return c.normalize(sign);
}
示例3:
Bigint operator - ( Bigint b ) { // subtraction operator overloading
if( sign != b.sign ) return (*this) + b.inverseSign();
int s = sign; sign = b.sign = 1;
if( (*this) < b ) return ((b - (*this)).inverseSign()).normalize(-s);
Bigint c;
for( int i = 0, borrow = 0; i < a.size(); i++ ) {
borrow = a[i] - borrow - (i < b.size() ? b.a[i] : 48);
c.a += borrow >= 0 ? borrow + 48 : borrow + 58;
borrow = borrow >= 0 ? 0 : 1;
}
return c.normalize(s);
}
示例4: memset
Bigint operator * ( Bigint b ) {
int MAXN=a.size()+b.size()+5;
int tmp[MAXN];
memset(tmp,0,sizeof(tmp));
for(int i=0; i<a.size(); i++)
for(int j=0, p=i; j<b.size(); j++){
tmp[p++] += (a[i]-'0')*(b.a[j]-'0');
}
Bigint c;
for(int i=0; i<MAXN-1; i++){
tmp[i+1] += tmp[i]/10;
tmp[i] %= 10;
c.a.push_back(tmp[i]+'0');
}
return c.normalize(sign*b.sign);
}