非常好用的大數類模板 Bignum

2021-06-20 13:18:13 字數 3088 閱讀 7954

#include#include#include#includeusing 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<<(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) //拷貝建構函式

bignum & bignum::operator=(const bignum & n) //過載賦值運算子,大數之間進行賦值運算

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

b.a[count]=sum;

count++;

} b.len =count++;

return in;

}ostream& operator<<(ostream& out, bignum& b) //過載輸出運算子

return out;

}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 ; 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;

}

非常好用的通用mapper

2.1匯入的jar table 用在類上 宣告資料庫的表名 id 用在屬性上 宣告當前屬性為主鍵 column name username 作用在屬性上 用來指定資料庫中的欄位名稱 注意 建議使用駝峰命名法 資料庫中以下劃線分割如 userage 實體類中要使用駝峰規則如 userage 主鍵策略 ...

18個非常好用的vim指令

在linux下最有名的程式編輯器非vim莫屬了。在一般模式下,1 dd 刪除游標所在行 2 word 全文搜尋指定單詞 3 g 將游標移動到檔案的最後一行,移動到第99行,就是99g 4 小寫x向後刪除乙個字元,大寫x向前刪除乙個字元 6 1,s word1 word2 gc 從第一行到最後一行尋找...

18個非常好用的vim指令

在linux下最有名的程式編輯器非vim莫屬了。在一般模式下,1 dd 刪除游標所在行 2 word 全文搜尋指定單詞 3 g 將游標移動到檔案的最後一行,移動到第99行,就是99g 4 小寫x向後刪除乙個字元,大寫x向前刪除乙個字元 6 1,s word1 word2 gc 從第一行到最後一行尋找...