第五届蓝桥杯Java组大学校园选拔真题_n级台阶

Posted 成长中的小牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五届蓝桥杯Java组大学校园选拔真题_n级台阶相关的知识,希望对你有一定的参考价值。

/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 

* All rights reserved.

* 文件名称: 蓝桥杯赛题                           

* 作    者:   彭俊豪               

* 完成日期:   2016   年 04月 01日

* 版 本 号:      001   

* 对任务及求解方法的描述部分

* 问题描述:

有n级台阶。从地面(第0级)出发,首先连续的上台阶,上到不超过第n级的
某一个位置后再连续的下台阶,直到回到地面。若每次上下台阶只允许走1级或2级,
请问可能的上下台阶的方案数是多少?
特别地,在0级站着不动也算一种方案。

数据格式:

输入一行包含两个正整数n和m。
输出一个整数,表示n级台阶有多少种合法的走楼梯方案,答案对m取余。

例如:输入:
2 10007
程序应该输出
6

 * 程序输出:  

【样例说明1】
共有6种方案(其中+表示上台阶,-表示下台阶):
(1) 原地不动
(2) +1 -1
(3) +2 -2
(4) +2 -1 -1
(5) +1 +1 -2
(6) +1 +1 -1 -1

再例如,输入:
3 14
程序应该输出:
1

【样例说明2】
共有15种方案,对14取余后得1。

【数据规模】
对于30%的数据,n<=10000;
对于100%的数据,n<=10^17,m<=2*10^9。

* 程序头部的注释结束

*/

上代码:

import java.util.Scanner;

public class Test {

  public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    int n=input.nextInt();
    int m=input.nextInt();

    int[] walk=new int[n+1];    //上台阶的方法数
    walk[0]=1;walk[1]=2;
    for(int i=2;i<n;i++){
      walk[i]=walk[i-1]+walk[i-2];
    }

    int sum=1;//站着不动的方法

    for(int i=0;i<n;i++){
      sum+=walk[i]*walk[i];
    }
    System.out.println(sum%m);

  }

}







































以上是关于第五届蓝桥杯Java组大学校园选拔真题_n级台阶的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯选拔赛真题03python求和 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

第四届蓝桥杯javaC组_第39级台阶

算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

蓝桥杯选拔赛真题23Scratch画笔跟随 少儿编程scratch蓝桥杯选拔赛真题讲解 初级组

2023年第十四届蓝桥杯Java_大学B组真题