博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hdu 1029 Ignatius and the Princess IV
阅读量:5283 次
发布时间:2019-06-14

本文共 1133 字,大约阅读时间需要 3 分钟。

卡特兰数的模拟。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include <
string.h>
#include <math.h>
using 
namespace std;
#define MAX 101
#define BASE 10000
int a[
101][MAX];
void multiple(
int a[], 
int size, 
int b)
{
    
int i, j;
    
int carry = 
0;
    
for(i = size-
1; i >= 
0; i--)
    {
        carry += a[i]*b;
        a[i] = carry%BASE;
        carry = carry/BASE;
    }
    
return ;
}
void divide(
int a[], 
int size, 
int b)
{
    
int i, j;
    
int div = 
0;
    
for(i = 
0; i < size; i++)
    {
        div = div*BASE + a[i];
        a[i] = div/b;
        div = div%b;
    }
    
return
}
void init()
{
    
int i;
    memset(a, 
0
sizeof(a));         
//
数组高位存放大数低位 
    a[
1][MAX-
1] = 
1;
    
for(i = 
2; i < 
101 ; i++)
    {
        memcpy(a[i], a[i-
1], 
sizeof(a[i-
1]));    
//
h(n) = h(n-1)
        multiple(a[i], MAX, 
4*i-
2);              
//
 h(n) = h(n-1)*(4*n-2)
        divide(a[i], MAX, i+
1);                     
//
h(n) = h(n-1)*(4*n-2)/(n+1)
    }
    
return ;
}
void output(
int n)
{
    
int i;
    
for(i = 
0; a[n][i] == 
0; i++);     
//
跳过数组前面的0 
    printf(
"
%d
", a[n][i++]);           
//
输出第一位非0数 
    
for(; i < MAX; i++)
    {
        printf(
"
%04d
", a[n][i]);       
//
由于进位是10000,所以每位保持4位长度 
    }
    printf(
"
\n
");
}
int main()
{
    
int n;
    init();
    
while(~scanf(
"
%d
", &n))
    {
        output(n);
    }
    
return 
0;

} 

转载于:https://www.cnblogs.com/g0feng/archive/2012/07/22/2603828.html

你可能感兴趣的文章
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
rotate the clock
查看>>
Python并发编程04/多线程
查看>>
CF461B Appleman and Tree
查看>>
CF1215E Marbles
查看>>
BZOJ2339 HNOI2011卡农(动态规划+组合数学)
查看>>
octave基本操作
查看>>