#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;
}int main(void)
}
HDU 1134,卡特蘭數
此題考查的是卡特蘭數,由於卡特蘭數很大,所以考慮大數處理。卡特蘭數的前幾項為 h 0 1 h 1 1 h 2 2 h 3 5 卡特蘭數的遞推公式為 h n h n 1 4 n 2 n 1 非遞推公式為c 2n,n n 1 此題用遞推公式求解,並用到大數的乘法和大數的乘法處理,本題對卡特蘭數的前100...
HDU5429大數模板
這題直接套大數模板就行了,我硬是要寫一發double試試,結果果斷wa了n多發,最後還沒過。也許是我修為太淺,不能找到double的正確ac姿勢。而且發現一般這種題基本上都是考大數的,用double基本上過不了,除了一些特殊的題目。include include include include in...
HDU 大數模板之Children s Queue
include include include include includeusing namespace std define maxn 9999 define maxsize 10 define dlen 4 class bignum 建構函式 bignum const int 將乙個int型...