题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
示例1
输入
3
返回值
4
f[n]=f[0]+f[1]+f[2]+…+f[n-1](f[0]=1)
可发现 1,2,4,8,16,32(n=1,2,3,4,5,6)即2^(n-1)
class Solution {
public:
int jumpFloorII(int number) {
long long a=2,b=number-1,c=1;
while(b)
{
if(b%2) c*=a;
a*=a;b/=2;
}
return c;
}
};