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])