裸的卡特兰数

  1. C++
    #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. #define base 10000
  5. #define len 100
  6. void multiply(int a[],int max,int b)
  7. {
  8. int i,array=;
  9. for(i=max-;i>=;i--)
  10. {
  11. array+=b*a[i];
  12. a[i]=array%base;
  13. array/=base;
  14.  
  15. }
  16. }
  17.  
  18. void divide(int a[],int max,int b)
  19. {
  20. int i,div=;
  21. for(i=;i<max;i++)
  22. {
  23. div=div*base+a[i];
  24. a[i]=div/b;
  25. div%=b;
  26. }
  27. }
  28.  
  29. int main()
  30. {
  31. int n,i;
  32. int a[][len];
  33. memset(a[],,len*sizeof(int));
  34. for(i=,a[][len-]=;i<;i++)
  35. {
  36. memcpy(a[i],a[i-],len*sizeof(int));
  37. multiply(a[i],len,*i-);
  38. divide(a[i],len,i+);
  39. }
  40. while(scanf("%d",&n)!=EOF)
  41. {
  42. for(i=;i<len&&a[n][i]==;i++);
  43. printf("%d",a[n][i++]);
  44. for(;i<len;i++)
  45. {
  46. printf("%04d",a[n][i]);
  47. }
  48. printf("\n");
  49. }
  50. return ;
  51. }
  1. pascal
    const
  2. modnum=;
  3. type
  4. arraytype=array[..] of longint;
  5. var
  6. s:string;
  7. i,j,l,m,n,le:longint;
  8. h:arraytype;
  9. procedure mul(var h:arraytype; k:longint);
  10. var
  11. j:longint;
  12. begin
  13. for j:= to le do h[j]:=h[j]*k;
  14. for j:= to le- do
  15. begin
  16. h[j+]:=h[j+]+h[j] div modnum;
  17. h[j]:=h[j] mod modnum;
  18. end;
  19. while h[le]>modnum do begin
  20. inc(le);
  21. h[le]:=h[le-] div modnum;
  22. h[le-]:=h[le-] mod modnum;
  23. end;
  24. end;
  25. procedure devide(var h:arraytype; k:longint);
  26. var
  27. d,o,r,i:longint;
  28. begin
  29. r:=;
  30. for i:=le downto do
  31. begin
  32. d:=modnum*r+h[i];
  33. h[i]:=d div k;
  34. r:=d mod k;
  35. end;
  36. end;
  37. begin
  38. readln(n);
  39. h[]:=;
  40. for i:= to n do
  41. begin
  42. mul(h,i+n); devide(h,i);
  43. end;
  44. devide(h,n+);
  45. while h[le]= do dec(le);
  46. write(h[le]);
  47. for i:=le- downto do
  48. begin
  49. str(h[i],s);
  50. while length(s)< do s:=''+s;
  51. write(s);
  52. end;
  53. end.

HDU 1130 How Many Trees?的更多相关文章

  1. HDU——1130 How Many Trees?

    How Many Trees? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  2. hdu 1130 How Many Trees?(Catalan数)

    How Many Trees? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. hdu 1130 How Many Trees? 【卡特兰数】

    题目 题意:给你一个数字n,问你将1~n这n个数字,可以组成多少棵不同的二叉搜索树. 1,2,5,14--根据输出中的规律可以看出这是一个卡特兰数的序列.于是代用卡特兰数中的一个递推式: 因为输入可取 ...

  4. HDU ACM 1134 Game of Connections / 1130 How Many Trees?(卡特兰数)

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1134 [解题背景]这题不会做,自己推公式推了一段时间,将n=3和n=4的情况列出来了,只发现第n项与 ...

  5. hdu 1693 Eat the Trees——插头DP

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1693 第一道插头 DP ! 直接用二进制数表示状态即可. #include<cstdio> # ...

  6. hdu 1130,hdu 1131(卡特兰数,大数)

    How Many Trees? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  7. HDU 1392 Surround the Trees(凸包入门)

    Surround the Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  8. HDU - 1392 Surround the Trees (凸包)

    Surround the Trees:http://acm.hdu.edu.cn/showproblem.php?pid=1392 题意: 在给定点中找到凸包,计算这个凸包的周长. 思路: 这道题找出 ...

  9. 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 ...

随机推荐

  1. Java I/O流操作(二)---缓冲流[转]

    转自:http://blog.csdn.net/johnny901114/article/details/8710403 一.BufferWriter类 IO的缓冲区的存在就是为了提高效率,把要操作的 ...

  2. IOS8 不用计算Cell高度的TableView实现方案

    这个新特性,意味着View被Autolayout调整frame后,会自动拉伸和收缩SupView. 具体到Cell,要求cell.contentView的四条边都与内部元素有约束关系. 在TableV ...

  3. Problem B: 最少步数

    DescriptionA friend of you is doing research on theTraveling Knight Problem (TKP) where you are to f ...

  4. 如何实现win7和VirtualBox中Ubuntu系统共享文件夹

    设备: 1.win7 旗舰版    2.VirtualBox虚拟机    3.Ubuntu12.04 以前在VM虚拟机中可以直接进行复制就可以将win7系统的文件复制到虚拟机中,然后现在安装了Virt ...

  5. IQC,QA,FQC,OQC,IPQC的定义与职责

    进货检验员(IQC):CLInetLabIQC(以下简称IQC)是CLInet在多年开发维护EQA(实验室间质量评价)系统后,成功开发的一套完善的实验室内部的质量评价.质量控制的软件.它不仅包含了每家 ...

  6. SSD的来由与优势

           SSD,对于很多人来说,它现在已不再是个很陌生的名词,有些网友谐趣的把它称作“湿湿的”,这里既有谐音的意味,也有称赞SSD意思.虽然大家对SSD已不算陌生,但恐怕对SSD的历史也所知不多 ...

  7. Qt 不规则窗体的实现(构造函数里setPaletteBackgroundPixmap后设置setMask)

    Skin(表皮) 是制作比较酷的软件界面的有利工具. 一个软件可以同时使用多种Skin 以取得不同的外观, 使同一个软件有截然不同的风格. 用户可以根据自己的喜好选择 不同的风格. 本节介绍使用 Qt ...

  8. Jsoup代码解读之四-parser

    Jsoup代码解读之四-parser 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性.这部分也是Jsoup最复杂的部分,需要一些数据结构.状态机乃至编译器的知识.好 ...

  9. 12.04 如何更专业的使用Chrome开发者工具

    顾名思义Chrome开发工具就是一个工具,它允许Web开发人员可以通过浏览器应用程序干预和操作Web页面,也可以通过这个工具调试和测试Web页面或Web应用程序.有了这个工具,你可以做很多有趣的事情: ...

  10. 【c语言】推断一个数是不是2的n次方

    // 推断一个数是不是2的n次方 #include <stdio.h> void judge_n(int a) { int b = a - 1; if ((a & b) == 0) ...