博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯-n级台阶-java
阅读量:4562 次
发布时间:2019-06-08

本文共 1101 字,大约阅读时间需要 3 分钟。

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

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

* 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);
  }

}

转载于:https://www.cnblogs.com/pengjunhao/p/6679657.html

你可能感兴趣的文章
静态缓存
查看>>
在线编辑器ckeditor配置与使用
查看>>
出圈问题C++源码(STLVector)
查看>>
instanceof语法解释
查看>>
计算字符串的高度
查看>>
CSS中对图片(background)的一些设置心得总结
查看>>
iOS 定位功能
查看>>
1776. Anniversary Firework sdut 2507 焰火表演
查看>>
sdut 1483 红色警戒之CZ的复仇
查看>>
[Leetcode] Subsets
查看>>
多线程 用户级线程和内核级线程 from C++多核高级编程
查看>>
微信小程序开发之图片预览
查看>>
ASP.NET Core学习系列
查看>>
饼图中如何将一定比例的小切片收集在一起
查看>>
转:使用Tengine替代Nginx作为负载均衡服务器
查看>>
css把容器级别(div...)标签固定在一个位置(在页面最右边)
查看>>
hive
查看>>
OC 反射-->动态创建类
查看>>
BZOJ 1006: [HNOI2008]神奇的国度
查看>>
Runner站立会议06
查看>>