HDU 1130 How Many Trees?
裸的卡特兰数
- C++
#include<iostream>- #include<cstdio>
- using namespace std;
- #define base 10000
- #define len 100
- void multiply(int a[],int max,int b)
- {
- int i,array=;
- for(i=max-;i>=;i--)
- {
- array+=b*a[i];
- a[i]=array%base;
- array/=base;
- }
- }
- void divide(int a[],int max,int b)
- {
- int i,div=;
- for(i=;i<max;i++)
- {
- div=div*base+a[i];
- a[i]=div/b;
- div%=b;
- }
- }
- int main()
- {
- int n,i;
- int a[][len];
- memset(a[],,len*sizeof(int));
- for(i=,a[][len-]=;i<;i++)
- {
- memcpy(a[i],a[i-],len*sizeof(int));
- multiply(a[i],len,*i-);
- divide(a[i],len,i+);
- }
- while(scanf("%d",&n)!=EOF)
- {
- for(i=;i<len&&a[n][i]==;i++);
- printf("%d",a[n][i++]);
- for(;i<len;i++)
- {
- printf("%04d",a[n][i]);
- }
- printf("\n");
- }
- return ;
- }
- pascal
const- modnum=;
- type
- arraytype=array[..] of longint;
- var
- s:string;
- i,j,l,m,n,le:longint;
- h:arraytype;
- procedure mul(var h:arraytype; k:longint);
- var
- j:longint;
- begin
- for j:= to le do h[j]:=h[j]*k;
- for j:= to le- do
- begin
- h[j+]:=h[j+]+h[j] div modnum;
- h[j]:=h[j] mod modnum;
- end;
- while h[le]>modnum do begin
- inc(le);
- h[le]:=h[le-] div modnum;
- h[le-]:=h[le-] mod modnum;
- end;
- end;
- procedure devide(var h:arraytype; k:longint);
- var
- d,o,r,i:longint;
- begin
- r:=;
- for i:=le downto do
- begin
- d:=modnum*r+h[i];
- h[i]:=d div k;
- r:=d mod k;
- end;
- end;
- begin
- readln(n);
- h[]:=;
- for i:= to n do
- begin
- mul(h,i+n); devide(h,i);
- end;
- devide(h,n+);
- while h[le]= do dec(le);
- write(h[le]);
- for i:=le- downto do
- begin
- str(h[i],s);
- while length(s)< do s:=''+s;
- write(s);
- end;
- end.
HDU 1130 How Many Trees?的更多相关文章
- HDU——1130 How Many Trees?
How Many Trees? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- hdu 1130 How Many Trees?(Catalan数)
How Many Trees? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1130 How Many Trees? 【卡特兰数】
题目 题意:给你一个数字n,问你将1~n这n个数字,可以组成多少棵不同的二叉搜索树. 1,2,5,14--根据输出中的规律可以看出这是一个卡特兰数的序列.于是代用卡特兰数中的一个递推式: 因为输入可取 ...
- HDU ACM 1134 Game of Connections / 1130 How Many Trees?(卡特兰数)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1134 [解题背景]这题不会做,自己推公式推了一段时间,将n=3和n=4的情况列出来了,只发现第n项与 ...
- hdu 1693 Eat the Trees——插头DP
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1693 第一道插头 DP ! 直接用二进制数表示状态即可. #include<cstdio> # ...
- hdu 1130,hdu 1131(卡特兰数,大数)
How Many Trees? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1392 Surround the Trees(凸包入门)
Surround the Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU - 1392 Surround the Trees (凸包)
Surround the Trees:http://acm.hdu.edu.cn/showproblem.php?pid=1392 题意: 在给定点中找到凸包,计算这个凸包的周长. 思路: 这道题找出 ...
- HDU 1392 Surround the Trees (凸包周长)
题目链接:HDU 1392 Problem Description There are a lot of trees in an area. A peasant wants to buy a rope ...
随机推荐
- Java I/O流操作(二)---缓冲流[转]
转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的 ...
- IOS8 不用计算Cell高度的TableView实现方案
这个新特性,意味着View被Autolayout调整frame后,会自动拉伸和收缩SupView. 具体到Cell,要求cell.contentView的四条边都与内部元素有约束关系. 在TableV ...
- Problem B: 最少步数
DescriptionA friend of you is doing research on theTraveling Knight Problem (TKP) where you are to f ...
- 如何实现win7和VirtualBox中Ubuntu系统共享文件夹
设备: 1.win7 旗舰版 2.VirtualBox虚拟机 3.Ubuntu12.04 以前在VM虚拟机中可以直接进行复制就可以将win7系统的文件复制到虚拟机中,然后现在安装了Virt ...
- IQC,QA,FQC,OQC,IPQC的定义与职责
进货检验员(IQC):CLInetLabIQC(以下简称IQC)是CLInet在多年开发维护EQA(实验室间质量评价)系统后,成功开发的一套完善的实验室内部的质量评价.质量控制的软件.它不仅包含了每家 ...
- SSD的来由与优势
SSD,对于很多人来说,它现在已不再是个很陌生的名词,有些网友谐趣的把它称作“湿湿的”,这里既有谐音的意味,也有称赞SSD意思.虽然大家对SSD已不算陌生,但恐怕对SSD的历史也所知不多 ...
- Qt 不规则窗体的实现(构造函数里setPaletteBackgroundPixmap后设置setMask)
Skin(表皮) 是制作比较酷的软件界面的有利工具. 一个软件可以同时使用多种Skin 以取得不同的外观, 使同一个软件有截然不同的风格. 用户可以根据自己的喜好选择 不同的风格. 本节介绍使用 Qt ...
- Jsoup代码解读之四-parser
Jsoup代码解读之四-parser 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性.这部分也是Jsoup最复杂的部分,需要一些数据结构.状态机乃至编译器的知识.好 ...
- 12.04 如何更专业的使用Chrome开发者工具
顾名思义Chrome开发工具就是一个工具,它允许Web开发人员可以通过浏览器应用程序干预和操作Web页面,也可以通过这个工具调试和测试Web页面或Web应用程序.有了这个工具,你可以做很多有趣的事情: ...
- 【c语言】推断一个数是不是2的n次方
// 推断一个数是不是2的n次方 #include <stdio.h> void judge_n(int a) { int b = a - 1; if ((a & b) == 0) ...