hdu 1134 卡特兰数(大数模板)
卡特兰数
递推公式: C(n)=C(2n,n)/(n+1) 即用数组表示为c[i]=c[i-1]*(4*i-2)/(i+1);
一般形式 直接 表达
c[1]=1;
for(i=2;i<40;i++)
{ c[i]=c[i-1]*(4*i-2)/(i+1);
}
一般 不超过33 超过33 后 数组溢出,
或者 超过44 后溢出
dp[1][1]=1; // 可到40
for(i=2;i<40;i++)for(j=1;j<=i;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}
dp[i][i]==// 卡特兰数
因此 当 要求44-100 内时 就要用到大数模板,来进行运算
针对这个题, 可以现 做预处理
引用c[i]=c[i-1]*(4*i-2)/(i+1);的思想, 用大数据来算
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cstring>
/*先 打表, 卡特兰数, 大数模板
*/
using namespace std;const int MAXN=10000;
const int DEL=4;
const int N=100;
int a[102][N+2];
void multiply(int a[],int b)//乘法
{int i,temp=0;for(i=N-1;i>=0;i--){temp+=a[i]*b;a[i]=temp%MAXN;temp/=MAXN;}
}
void divid(int a[],int b)//除法
{int temp=0,i;for(i=0;i<N;i++){temp=temp*MAXN+a[i];a[i]=temp/b;temp=temp%b;}
}int main()
{int i,n;memset(a[1],0,sizeof(a[1]));a[1][N-1]=1;for(i=2;i<N+1;i++)//打表{memcpy(a[i],a[i-1],N*sizeof(int));multiply(a[i],4*i-2);//乘法divid(a[i],i+1);//除法}while(~scanf("%d",&n)&&n!=-1){for(i=0;i<N&a[n][i]==0;i++);// 去掉前面的0printf("%d",a[n][i]);for(i=i+1;i<N;i++){printf("%04d",a[n][i]);// 无0 补0}printf("\n");}return 0;
}
转载于:https://www.cnblogs.com/sizaif/p/9078573.html
hdu 1134 卡特兰数(大数模板)相关推荐
- HDU 3723 Delta Wave(卡特兰数+大数)
题意:从坐标(0, 0)到(n, 0)的折线,这条折线每向右延伸一个单位长度,高度要么不变,要么+1,要么-1,(不能到y=0以下)已知n,求这种折线种数 思路:我们知道上升和下降的次数要一样,而这就 ...
- HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...
- zcmu-1934(卡特兰数大数取模(逆元))
1934: ly的二叉树 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 42 Solved: 9 [Submit][Status][Web Boar ...
- hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...
题解说的很好呀== 就是拿50和100的买票多少种方案== 1 #include<stdio.h> 2 #include<string.h> 3 #include<alg ...
- 【HDU - 1134 】Game of Connections(JAVA大数加法,卡特兰数)
题干: This is a small but ancient game. You are supposed to write down the numbers 1, 2, 3, ... , 2n - ...
- hdu 1023 大数 卡特兰数
卡特兰数 JAVA大数 import java.util.*; import java.math.*; public class Main {public static void main(Strin ...
- HDU 5673 Robot 卡特兰数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5673 题目描述: 一个人从原点开始向右走, 要求N秒后回到原点, 且过程中不能到负半轴, 人有两种操 ...
- HDU 3240 Counting Binary Trees 数论-卡特兰数
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3240 卡特兰数递推公式h(i)=h(i-1)*(4*i-2)/(i+1) 如果直接算每一步,然后mo ...
- c++ 大数类 大数模板
分别使用C++中的运算符重载的方法来实现大数之间的数学运算,包括加法.减法.乘法.除法.n次方.取模.大小比较.赋值以及输入流.输出流的重载.. 并且使用这个大数模板,顺利AC了HDOJ上的1134这 ...
最新文章
- 软件测试-培训的套路-log3
- WhatsApp宣布免费 欲变身一站式企业式服务应用
- Your PC needs to be repaired
- 内存颗粒位宽和容量_SDRAM的逻辑Bank与芯片容量表示方法
- c 正则提取html,c – 正则表达式以获取HTML表格内容
- 爬虫开发.1爬虫介绍
- 蓝桥杯2020年第十一届Python省赛第一题-门牌制作
- scrum 12.8
- jcodec_java-jcodec-有人看过该库的文档吗?
- Java的GUI学习三(frame)
- 手把手教你学项目管理软件project
- HTML+CSS+JS大作业:生态环境网站设计——环境保护主题-绿色环保 (9页) web期末作业设计网页_绿色环保大学生网页设计作业成品
- Python实用案例,Python脚本实现快速卡通化人物头像,让我想起了QQ秀时光!
- 麒麟座IIC-STM32F103RET6(1)-完成基础LED
- 现代控制理论基础总结
- 详解typora配置华为云图床
- laragon mysql版本_laragon mysql8 安装
- 万邦淘宝/天猫获得淘宝商品评论 API 返回值说明
- 运行springboot项目时报错: Description: The bean ‘userServiceImpl‘ could not be injected as a
- Retrying connect to server: xxx.xxx.xxx.xxx:8032. Already tried 0 time(s)