-
题目描述:
-
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
-
输入:
-
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=50)。
-
输出:
-
对应每个测试案例,
输出该青蛙跳上一个n级的台阶总共有多少种跳法。
样例输入:
6
样例输出:
32
不难发现:f(1) = 1; f(2) = 2; ∴ f(n) = f(n-1)+f(n-2)...+f(1)+1 (n>=2)
进一步可以得到f(n) = 2^(n-1),因此可以使用位运算,简洁高效。
<span style="font-family:'Microsoft YaHei';"><span style="font-size:18px;">#include <stdio.h>
int main()
{
unsigned long long result;
unsigned int n;
while (scanf("%u", &n)!=EOF)
{
result = ((unsigned long long)1) << (n-1);
printf("%llu\n", result);
}
return 0;
}
/**************************************************************
Problem: 1389
User: xy14qg
Language: C++
Result: Accepted
Time:0 ms
Memory:1016 kb
****************************************************************/</span></span>