题目描述:
在你面前有一个n阶的楼梯(n>=100且n<500),你一步只能上1阶或3阶。
请问计算出你可以采用多少种不同的方式爬完这个楼梯(到最后一层为爬完)。
(注意超大数据)
输入描述:
一个正整数,表示这个楼梯一共有多少阶
输出描述:
一个正整数,表示有多少种不同的方式爬完这个楼梯
输入:
100
输出:
24382819596721629
题意:
题目描述
题解:
dp[i] = dp[i-1]+dp[i-3]
代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
public static void main(String[]args)throws IOException{
BufferedReader br=new BufferedReader (new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
BigInteger[]arr=new BigInteger[n+1];
arr[1]=new BigInteger("1");
arr[2]=new BigInteger("1");
arr[3]=new BigInteger("2");
for(int i=4;i<=n;i++) {
arr[i]=arr[i-1].add(arr[i-3]);
}System.out.println(arr[n]);
}
}