HDOJ1023(卡特兰数+大数乘除法)
2017-09-25 19:10
316 查看
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <algorithm> #include <stack> using namespace std; #define N 110 int a ; //a [0] 用于当长度是n时的组合数 void ktl() { int i, j, l = 1, c, s; a[1][0] = 1; a[1][1] = 1; a[2][0] = 1; a[2][1] = 2; for (i = 3; i < 101; i++) //预打表 { c = 0; for (j = 1; j <= l; j++) //(乘法) { s = a[i - 1][j] * (4 * i - 2) + c;//example: 11*4=10*4+1*4, c是上一位的进位 a[i][j] = s % 10; c = s / 10; } while (c) //(乘法进位处理) { a[i][++l] = c % 10; c /= 10; } for (int j = l; j > 0; j--) //(除法) { s = a[i][j] + c * 10; //example:99/10 9除不尽10 作余数留到下一位 使得下一位是99 可以除得尽10 a[i][j] = s / (i + 1); c = s % (i + 1); } while (!a[i][l]) l--; a[i][0] = l; //储存长度 } } int main() { ktl(); int n; while (cin >> n) { for (int i = a [0]; i > 0; i--) cout << a [i]; cout << endl; } return 0; }
相关文章推荐
- HDOJ1261 大数乘除法应用
- 杭电ACM OJ 1023 Train Problem II 卡特兰数 + 大数乘法 轻松解决出栈情况计数
- hdu 1023 大数 卡特兰数
- HDU 1023 Traning Problem (2) 大数卡特兰数
- HDU 1023 Train Problem II 卡特兰数 大数的乘法除法
- HDU 1133 Buy the Ticket 50,100钱买票,大数乘除法,卡特兰数变形
- hdoj--1023 Train Problem II (高精度乘除法)
- HDOJ 1023 Train Problem II(卡特兰数+大数乘除法)
- 大数乘除(hdoj1023)
- HDOJ 1130 How Many Trees?(卡特兰数+大数乘除法)
- HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
- hdu 1023(大数+卡特兰数)
- HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
- HDOJ 1023 卡特兰数
- hdu 1023 1130 1134 卡特兰数 (中间有大数相除和大数相乘)
- HDOJ HDU 1023 1130 1133 1134 2067 ACM 1023 1130 1133 1134 2067 IN HDU ( 卡特兰数 专题 catalan )
- hdoj 字串数 1261 (排列组合&大数乘除法)好题
- hdoj 1023 Train Problem II 【卡特兰数】
- 【ACM Steps】2.2.6 HDOJ 1023 Train Problem II JAVA解决卡特兰大数问题
- hdoj-1023-Train Problem II【卡特兰数】