链接:http://pre.ac.nowcoder.com/acm/contest/1869/Q
来源:牛客网
题目描述
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n (1 ≤ n ≤ 30)
输出描述:
输出一个整数,即小乐乐可以走的方法数。
小乐乐有两种走法,一次一个台阶或两个台阶,由此想到排列组合,以n=10时为例,如图
左边表示为一步走两个台阶的次数,小乐乐每走一次两个台阶便可少走一步

接下来先写一个排列组合的公式程序,如图

最后记得考虑sum的取值范围是longlong
#include<iostream>
using namespace std;
int main()
{
short n;
long long sum = 0;
cin >> n;
for (int i = 0; n - i >= i; i++)
{
short t = n - i;
long long p = 1, q = 1;
for (int j = t; j > t - i; j--)
{
p *= j;
q *= t - j + 1;
}
sum += p / q;
}
cout << sum << endl;
}
京公网安备 11010502036488号