大數的各種操作模板

2021-06-26 20:48:19 字數 2961 閱讀 1462

kunagbin 的板子

#include #include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

#define maxn 9999

#define maxsize 1010

#define dlen 4

class bignum

; bignum(const int); //將乙個int型別的變數轉換為大數

bignum(const char*); //將乙個字串型別的變數轉換為大數

bignum(const bignum &); //拷貝建構函式

bignum &operator=(const bignum &); //過載賦值運算子=,使得大數之間可以用=進行賦值

friend istream& operator>>(istream&,bignum&); //過載輸入運算子

friend ostream& operator<<(ostream&,bignum&); //過載輸出運算子

bignum operator+(const bignum &)const; //過載加法運算子,兩個大數之間的相加運算

bignum operator-(const bignum &)const; //過載減法運算子,兩個大數之間的相減運算

bignum operator*(const bignum &)const; //過載乘法運算子,兩個大數之間的相乘運算

bignum operator/(const int &)const; //過載除法運算子,兩個大數之間的相除運算

bignum operator^(const int &)const; //大數的n次方運算

int operator%(const int &)const; //大數對乙個int型別的數進行取模運算

bool operator>(const bignum &t)const; //大數和另乙個大數的大小比較

bool operator>(const int &t)const; //大數和乙個int型別的數的大小比較

void print();//輸出大數

};bignum::bignum(const int b)//將乙個int型別的變數轉化為大數

a[len++]=d;

}bignum::bignum(const char *s)//將乙個字串型別的變數轉換為大數

}bignum::bignum(const bignum &t):len(t.len)//拷貝建構函式

b.a[count]=sum;

count++;

}b.len=count++;

return in;

}ostream& operator<<(ostream& out,bignum& b)//過載輸出操作符

bignum bignum::operator+(const bignum &t)const //兩個大數之間的相加運算

}if(t.a[big]!=0)

t.len=big+1;

else t.len=big;

return t;

}bignum bignum::operator-(const bignum &t)const //兩個大數之間的相減運算

else

big=t1.len;

for(i=0;ii)

t1.a[j--]+=maxn;

t1.a[i]+=maxn+1-t2.a[i];

}else t1.a[i]-=t2.a[i];

}t1.len=big;

while(t1.a[len-1]==0 && t1.len>1)

if(flag)

t1.a[big-1]=0-t1.a[big-1];

return t1;

}bignum bignum::operator*(const bignum & t) const //兩個大數之間的相乘運算

else

}if(up != 0)

ret.a[i + j] = up;

} ret.len = i + j;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

}bignum bignum::operator/(const int& b) const //大數間進行相除運算

ret.len = len;

while(ret.a[ret.len - 1] == 0 && ret.len > 1)

ret.len--;

return ret;

}int bignum::operator%(const int & b) const //大數對乙個int型別的變數進行取模運算

return d;

}bignum bignum::operator^(const int & n) const //大數的n次方運算

m-=i;

ret=ret*t;

if(m==1)

ret=ret*(*this);

} return ret;

}bool bignum::operator>(const bignum & t) const //大數和另乙個大數的大小比較

else

return false;

}bool bignum::operator >(const int & t) const //大數和乙個int型別的變數的大小比較

void bignum::print() //輸出大數

printf("\n");

}bignum dp[1808];

int main()

return 0;

}

stl版的各種模板

最近學stl的時候就想把以前需要手操資料結構的模板再寫一遍 話不多說,模板慢慢更新,先從拓撲排序開始。臨接表的拓撲 include include include include include include include using namespace std queue dui const ...

模板整理 大數模板

include include include include include includeusing namespace std define maxn 9999 define maxsize 1000 define dlen 4 class bignum 建構函式 bignum const i...

大數相乘模板

兩個長度長於50000的數相乘 include include include include include using namespace std const double pi acos 1.0 複數結構體 struct complex complex operator const compl...