0
点赞
收藏
分享

微信扫一扫

P2532 [AHOI2012]树屋阶梯

P2532 [AHOI2012]树屋阶梯

提交4.66k

通过1.79k

时间限制1.00s

内存限制125.00MB

提交答案加入题单

复制题目

题目提供者clearman

难度提高+/省选-

历史分数100

 提交记录  查看题解

标签

各省省选安徽2012

 查看算法标签

进入讨论版

相关讨论

 查看讨论

推荐题目

 查看推荐

 洛谷推荐关闭

 展开

题目描述

输入格式

一个正整数N(1<=N<=500),表示阶梯的高度。

输出格式

一个正整数,表示搭建方法的个数。(注:搭建方法的个数可能很大)

输入输出样例

输入 #1复制

3

输出 #1复制

5

说明/提示

40%的数据:1<=N<=20

80%的数据:1<=N<=300

100%的数据:1<=N<=500

【AC代码】

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
inline int read()
{
	char ch=getchar();
	int n=0,m=1;
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')m=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')n=(n<<3)+(n<<1)+ch-48,ch=getchar();
	return n*m;
}
void write(int n)
{
	if(n>9)write(n/10);
	putchar(n%10+'0');
}
int a[N][N],len=1,n,m;
void d(int n)
{
	for(int i=1;i<=len;i++)a[n][i]=a[n-1][i]+a[n][i];
	for(int i=1;i<=len;i++)a[n][i+1]+=a[n][i]/10,a[n][i]%=10;
	if(a[n][len+1])len++;
}
signed main(int argc,char **argv)
{
	n=read(),a[1][1]=1;
	for(int i=2;i<=n+1;i++)
		for(int j=1;j<=i;j++)d(j);
	for(int i=len;i>0;i--)write(a[n][i]);
	return 0;
}

【P党的福利】

n=int(input())
f=[0,1]
if n==1:
	print(1)
	exit(0)
for i in range(2,n+1):
	f.append(f[i-1]*(4*i-2)//(i+1))
print(f[n]) 

 

举报

相关推荐

0 条评论