C 大整數類

2021-08-31 21:34:36 字數 2710 閱讀 4949

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

#include

#include

#include

#include

using

namespace

std; #define maxn 9999

#define maxsize 10

#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

<

int   &) const;    //過載除法運算子,大數對乙個整數進行相除運算  bignum operator^(const

int  &) const;    //大數的n次方運算

intoperator%(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)  //拷貝建構函式 bignum & bignum::operator=(const bignum & n)   //過載賦值運算子,大數之間進行賦值運算istream& operator>>(istream & in,  bignum & b)   //過載輸入運算子  b.a[count]=sum;  count++; } b.len =count++; return in; }ostream& operator

<

//兩個大數之間的相加運算  }  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 ; i < big ; 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()    //輸出大數  cout

<< endl;}int

main

(void)

給我老師的人工智慧教程打call!

大整數類c 實現

在日常使用c 的過程中,經常會遇到數字太大越界的情況,對於這樣的大整數運算,我們可以用模擬比算的方法來實現,但是這樣每次運算都要實現這樣的演算法會帶來一定的不方便,我們希望能像int這樣的內建型別一樣使用大整數,所以我們實現乙個大整數struct 感謝劉汝佳老師的演算法競賽入門經典一書 struct...

BigInteger 大整數類(C )

有時候需要用到大整數,這裡放乙個自己寫的大整數結構體 biginteger 實現的功能如下 其中乘法運算和除法運算都是 o n 2 o n 2 o n2 的複雜度。struct biginteger biginteger const biginteger y biginteger const big...

大整數C 類的實現

include include include includeusing namespace std class bigint ostream operator ostream out,bigint bint 該函式得作用是將向量中的每乙個數字轉化為字元 數字 0 就相當於將數字轉化為字元 stri...