hdu1023卡特兰数
来源:互联网 发布:淘宝梦想世界 编辑:程序博客网 时间:2024/06/11 18:13
c(2n,n)-c(2n,n-1)
我只是觉得大数写的我要死。
#include <iostream>#include <algorithm>#include <iomanip>using namespace std;int *c[205][205];const int base = 100000000;void sum(const int *num1, int size1, const int *num2, int size2, int **num){ int size = max(size1, size2) + 2; int digit = 1; int carry = 0; (*num) = new int[size]; while (digit <= size1 && digit <= size2) { (*num)[digit] = num1[digit] + num2[digit] + carry; carry = (*num)[digit] / base; (*num)[digit] %= base; ++digit; } while (digit <= size1) { (*num)[digit] = num1[digit] + carry; carry = (*num)[digit] / base; (*num)[digit] %= base; ++digit; } while (digit <= size2) { (*num)[digit] = num2[digit] + carry; carry = (*num)[digit] / base; (*num)[digit] %= base; ++digit; } while (carry > 0) { (*num)[digit++] = carry; carry /= base; } (*num)[0] = digit - 1;}void sub(const int *num1, const int *num2, int **num) //大减小{ int i, borrow; (*num) = new int[num1[0]]; for (i = 1, borrow = 0; i <= num2[0]; ++i) { (*num)[i] = num1[i] - num2[i] - borrow; borrow = 0; while ((*num)[i] < 0) { (*num)[i] += base; ++borrow; } } while (i <= num1[0]) { (*num)[i] = num1[i] - borrow; borrow = 0; while ((*num)[i] < 0) { (*num)[i] += base; ++borrow; } ++i; } while ((*num)[--i] == 0) continue; (*num)[0] = i;}void print(const int *a){ int digit = a[0]; cout << a[digit--]; while (digit > 0) cout << setw(8) << setfill('0') << a[digit--]; //在这错了超多次 cout << endl;}int main(void){ ios::sync_with_stdio(false); c[0][0] = new int[2]; c[0][0][0] = 1; c[0][0][1] = 1; for (int i = 1; i != 205; ++i) { c[i][0] = new int[2]; c[i][0][0] = 1; c[i][0][1] = 1; c[i][i] = new int[2]; c[i][i][0] = 1; c[i][i][1] = 1; } for (int i = 2; i != 205; ++i) for (int j = 1; j != i; ++j) sum(c[i - 1][j - 1], c[i - 1][j - 1][0], c[i - 1][j], c[i - 1][j][0], &c[i][j]); int n; while (cin >> n) { int *ans; sub(c[2 * n][n], c[2 * n][n - 1], &ans); print(ans); delete[] ans; } return 0;}
1 0
- HDU1023(卡特兰数)
- hdu1023卡特兰数
- 卡特兰数模板 hdu1023
- hdu1023(卡特兰数)
- hdu1023 Train Problem II(卡特兰数)
- hdu1023 Train Problem II 卡特兰数
- HDU1023 Train Problem 卡特兰数
- HDU1023 (卡特兰数入门)
- HDU1023(JAVA···高精度卡特兰数)
- hdu2067和hdu1023 卡特兰数解法与大数处理
- hdu1023 Train Problem II 卡特兰数,JAVA大数类
- HDU1023——Train Problem II(卡特兰数)
- hdu1023 Train Problem II(卡特兰数)
- hdu1023 Train Problem II [高精度卡特兰数]
- 杭电HDU1023卡特兰大数
- ACM-卡特兰数之Train Problem II——hdu1023
- HDU1023 Train Problem II【卡特兰数+大数+亿进制+打表】
- 卡特兰数,高精度卡特兰数
- L1-003. 个位数统计
- Python核心编程---读书笔记:第1章~第3章
- The first day of learn java
- 数据库学习笔记二
- 【九度OJ】题目1205:N阶楼梯上楼问题 解题报告
- hdu1023卡特兰数
- 赛高游戏引擎重构(一)Host App 扩展 TGEGameModel 的方案
- java访问权限
- VMware安装Ubuntu Kylin 16.04
- DEBUG:JDBC建立了事务,操作失败,却没能实现回滚的问题
- HTTP Header 详解
- python的with用法
- 对于派生类的构造函数,在定义对象时构造函数的执行顺序
- JAVA动态代理之java.lang.reflect.Proxy.newProxyInstance源码