zoukankan      html  css  js  c++  java
  • 蓝桥杯-n级台阶-java

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

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

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

      }

    }

  • 相关阅读:
    Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率
    实用设计模式之观察者模式
    并查集简单题pku1611
    HDU 4534 郑厂长系列故事——新闻净化(AC自动机+DP)
    求 小于 n 的 质数 几种方式
    MySQL数据库高并发优化配置
    MySQL 对于千万级的大表要怎么优化?
    mysql数据库优化总结
    php 正则表达式怎么匹配标签里面的style?
    MySql数据库优化可以从哪几个方面进行?
  • 原文地址:https://www.cnblogs.com/pengjunhao/p/6679657.html
Copyright © 2011-2022 走看看