zoukankan
html css js c++ java
hdu1134大数+catalan数
//hdu1134大数+catalan数 #include<iostream> #include<string> #include<iomanip> #include<algorithm> using namespace std; #define MAXN 9999 #define DLEN 4 class BigNum{ private: int a[300]; int len; public: BigNum(){len = 1;memset(a,0,sizeof(a));} BigNum(const int b); BigNum(const BigNum & T); bool Bigger(const BigNum &) const; BigNum & operator=(const BigNum &); BigNum & Add(const BigNum &); BigNum & Sub(const BigNum &); BigNum operator+(const BigNum &) const; BigNum operator-(const BigNum &) const; BigNum operator*(const BigNum &) const; BigNum operator/(const int &) const; void Print(); }; BigNum::BigNum(const int b) { int c,d = b; len = 0; memset(a,0,sizeof(a)); while(d > MAXN){ c = d - d / (MAXN + 1) * (MAXN + 1); cout<<d / (MAXN + 1) * (MAXN + 1)<<endl; cout<<c<<endl; d = d / (MAXN + 1); a[len++] = c; } a[len++] = d; } BigNum::BigNum(const BigNum & T) : len(T.len) { int i; memset(a,0,sizeof(a)); for(i = 0 ; i < len ; i++) a[i] = T.a[i]; } bool BigNum::Bigger(const BigNum & T) const { int ln; if(len > T.len) return true; else if(len == T.len){ ln = len - 1; while(a[ln] == T.a[ln] && ln >= 0) ln--; if(ln >= 0 && a[ln] > T.a[ln]) return true; else return false; } else return false; } BigNum & BigNum::operator=(const BigNum & n) { len = n.len; memset(a,0,sizeof(a)); for(int i = 0 ; i < len ; i++) a[i] = n.a[i]; return *this; } BigNum & BigNum::Add(const BigNum & T) { int i,big; big = T.len > len ? T.len : len; for(i = 0 ; i < big ; i++) { a[i] = a[i] + T.a[i]; if(a[i] > MAXN) { a[i + 1]++; a[i] = a[i] - MAXN - 1; } } if(a[big] != 0) len = big + 1; else len = big; return *this; } BigNum & BigNum::Sub(const BigNum & T) { int i,j,big; big = T.len > len ? T.len : len; for(i = 0 ; i < big ; i++){ if(a[i] < T.a[i]){ j = i + 1; while(a[j] == 0) j++; a[j--]--; while(j > i) a[j--] += MAXN; a[i] = a[i] + MAXN + 1 - T.a[i]; } else a[i] -= T.a[i]; } len = big; while(a[len - 1] == 0 && len > 1) len--; return *this; } BigNum BigNum::operator*(const BigNum & T) const { BigNum ret; int i,j,up; int temp,temp1; for(i = 0 ; i < len ; i++){ up = 0; for(j = 0 ; j < T.len ; j++){ temp = a[i] * T.a[j] + ret.a[i + j] + up; if(temp > MAXN){ temp1 = temp - temp / (MAXN + 1) * (MAXN + 1); up = temp / (MAXN + 1); ret.a[i + j] = temp1; } else { up = 0; ret.a[i + j] = temp; } } 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 { BigNum ret; int i,down = 0; for(i = len - 1 ; i >= 0 ; i--){ ret.a[i] = (a[i] + down * (MAXN + 1)) / b; down = a[i] + down * (MAXN + 1) - ret.a[i] * b; } ret.len = len; while(ret.a[ret.len - 1] == 0) ret.len--; return ret; } void BigNum::Print() { int i; cout << a[len - 1]; for(i = len - 2 ; i >= 0 ; i--){ cout.width(DLEN); cout.fill('0'); cout << a[i]; } cout << endl; } int main() { BigNum x[110]; long n,i; x[1]=1; x[2]=2; x[3]=5; for(i=3;i<100;i++) { x[i+1]=x[i]*(4*i+2)/(i+2); } while(cin>>n&&n!=-1) { x[n].Print(); } return 0; }
查看全文
相关阅读:
[BZOJ1211]:[HNOI2004]树的计数(prufer序列)
[CSP-S模拟测试]:那一天她里我而去(堆优化Dijkstra)
[CSP-S模拟测试]:那一天我们许下约定(DP+组合数学)
BZOJ3130 [Sdoi2013]费用流 【网络流 + 二分】
BZOJ3124 [Sdoi2013]直径 【树的直径】
BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】
BZOJ2707 [SDOI2012]走迷宫 【概率dp + tarjan + 高斯消元】
BZOJ2726 [SDOI2012]任务安排 【斜率优化 + cdq分治】
洛谷P2351 [SDOi2012]吊灯 【数学】
BZOJ2246 [SDOI2011]迷宫探险 【记忆化搜索dp + 概率】
原文地址:https://www.cnblogs.com/windmissing/p/2559898.html
最新文章
Nginx优化配置详解
Centos7安装docker-machine
Docker Swarm 创建服务
Docker Swarm 创建overlay网络
hdu 4300 Clairewd’s message 字符串哈希
F: Fabulous Race Between Tortoise And Rabbit 扩展欧几里得
Working Plan 优先队列+贪心
单调栈
南昌 Max answer
poj 2796 Feel Good单调栈
热门文章
po'j2559 Largest Rectangle in a Histogram 单调栈(递增)
poj3250 Bad Hair Day 单调栈(递减)
博客园黑色代码高亮
hdu1024 Max Sum Plus Plus 滚动dp
[CSP-S模拟测试]:visit(组合数学+exLucas+CRT)
[Codeforces 274E]:Mirror Room(模拟)
[CSP-S模拟测试]:方程的解(小学奥数)
[CSP-S模拟测试]:超级树(DP)
[CSP-S模拟测试]:星际旅行(欧拉路)
[HDU6403]:Card Game(dfs+DP+基环树)
Copyright © 2011-2022 走看看