题目标题: 第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。
/*
1,有39级台阶
2,一共要迈偶数步
3,每一步只能是1级或者2级
求上法
若 1级的有a步,2级有b步;
则可知b的范围,1~19;
1,a+2b==39;
2,a+b%2==0;
3,当b已知,则其方法数为C(b,39-b);
*/
#include<stdio.h>
int main()
{
int f(int k);
int i,a,b,sum=0;
for(b=1;b<=19;b++)
{
a=39-2*b;
if((a+b)%2==0)
sum+=f(b); //求总的方法数;
}
printf("%d",sum);
return 0;
};
int f(int k){
int i,n=1;
for(i=0;i<k;i++){
n=n*(39-k-i)/(i+1); //求C(39-b,b)的组合数;
}
return (n);
}
/* 总结一下组合数和排列数的求法;
int c=1,a=1;
C(n,a)=n!/a!*(n-a)!
for(i=0;i<a;i++)
c=c*(n-i)/(i+1);
A(n,a)=n!/(n-a)!
for(i=n-a+1;i<=n;i++)
a=a*i;
*/
注意排列组合也是常考点。公式一定别弄错。