蓝桥杯第五届省赛JAVA真题----n级台阶
有n級(jí)臺(tái)階。從地面(第0級(jí))出發(fā),首先連續(xù)的上臺(tái)階,上到不超過(guò)第n級(jí)的某一個(gè)位置后再連續(xù)的下臺(tái)階,直到回到地面。若每次上下臺(tái)階只允許走1級(jí)或2級(jí),請(qǐng)問(wèn)可能的上下臺(tái)階的方案數(shù)是多少?
特別地,在0級(jí)站著不動(dòng)也算一種方案。
數(shù)據(jù)格式:
輸入一行包含兩個(gè)正整數(shù)n和m。
輸出一個(gè)整數(shù),表示n級(jí)臺(tái)階有多少種合法的走樓梯方案,答案對(duì)m取余。
例如:輸入:
2 10007
程序應(yīng)該輸出
6
【樣例說(shuō)明1】
共有6種方案(其中+表示上臺(tái)階,-表示下臺(tái)階):
(1) 原地不動(dòng)
(2) +1 -1
(3) +2 -2
(4) +2 -1 -1
(5) +1 +1 -2
(6) +1 +1 -1 -1
再例如,輸入:
3 14
程序應(yīng)該輸出:
1
【樣例說(shuō)明2】
共有15種方案,對(duì)14取余后得1。
【數(shù)據(jù)規(guī)模】
對(duì)于30%的數(shù)據(jù),n<=10000;
對(duì)于100%的數(shù)據(jù),n<=10^17,m<=2*10^9。
資源約定:
峰值內(nèi)存消耗(含虛擬機(jī)) < 256M
CPU消耗 < 1000ms
請(qǐng)嚴(yán)格按要求輸出,不要畫(huà)蛇添足地打印類(lèi)似:“請(qǐng)您輸入…” 的多余內(nèi)容。
所有代碼放在同一個(gè)源文件中,調(diào)試通過(guò)后,拷貝提交該源碼。
注意:不要使用package語(yǔ)句。不要使用jdk1.7及以上版本的特性。
注意:主類(lèi)的名字必須是:Main,否則按無(wú)效代碼處理。
解析:這個(gè)題目不要被上樓梯、下樓梯搞迷糊了,我們只需要計(jì)算出每次走1步或2步,走n級(jí)臺(tái)階有幾種可能性就可以了。至于下樓梯的情況平方以下就可以了。
import java.util.Scanner;public class Main {static int cnt = 0;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int sum=0;for(int i=0;i<=n;i++){f(i, 0);sum += cnt*cnt;cnt = 0;}System.out.println(sum%m);}private static void f(int n, int i) {// TODO Auto-generated method stubif (i > n) {return;}if (i == n) {cnt += 1;}f(n, i + 1);f(n, i + 2);} }當(dāng)然,大神的代碼一般都是這樣的,如果看不太懂就看上面的方法吧。
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int sum=1;for(int i=0;i<=n;i++){sum+=i*i;}System.out.println(sum%m);} }總結(jié)
以上是生活随笔為你收集整理的蓝桥杯第五届省赛JAVA真题----n级台阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ubuntu触电(转)
- 下一篇: (转)asp.net2.0 上传大容量文