zoukankan      html  css  js  c++  java
  • 洛谷 U3357 C2-走楼梯

    https://www.luogu.org/problem/show?pid=U3357

    题目背景

    在你成功地解决了上一个问题之后,方方方不禁有些气恼,于是他在楼梯上跳来跳去,想要你求出他跳的方案数。..

    题目描述

    方方方站在一个n阶楼梯下面,他每次可以往上跳一步或两步,往下跳一步到四步(由于地心引力跳得比较远),而且在往下跳的时候你只能踩在你往上跳时踩过的格子。

    现在方方方在楼梯上乱跳,想问他跳到楼梯顶上最后又跳回楼梯下面的方案数mod 2333333。

    请注意:针对题目有歧义的情况,这里再说明一下。方方方只能一直向上跳,跳到楼梯最上面,然后再往下跳,跳回楼梯最底下。

    输入输出格式

    输入格式:

    输入一行一个数n。

    输出格式:

    输出方方方跳回楼梯下面的方案数mod 2333333。

    输入输出样例

    输入样例#1:
    5
    输出样例#1:
    52
    输入样例#2:
    7654321
    输出样例#2:
    451197
    输入样例#3:
    3
    输出样例#3:
    8

    说明

    对于30%的数据,n<=10。

    对于100%的数据,1<=n<=10^7。

    向下走可以看成向上走

    f[i]表示第一次向上走到i,第二次向上也走到i的方案数

    如果第二次向上走1步到i,这1步第一次有1种走法

    如果第二次向上走2步到i,这2步第一次有2种走法

    如果第二次向上走3步到i,这3步第一次有3种走法

    如果第二次向上走4步到i,这4步第一次有5种走法

    所以状态转移方程:f[i]=f[i-1]+f[i-2]*2+f[i-3]*3+f[i-4]*5

    #include<cstdio>
    #define N 10000001
    #define mod 2333333
    using namespace std;
    int f[N];
    int main()
    {
        int n;
        scanf("%d",&n);
        f[0]=1; f[1]=1; f[2]=3; f[3]=8;
        for(int i=4;i<=n;i++) f[i]=(f[i-1]+f[i-2]*2+f[i-3]*3+f[i-4]*5)%mod;
        printf("%d",f[n]);
    }
  • 相关阅读:
    channels的使用
    paramiko模块(远程操作服务器)
    GIT版本管理工具教程
    Python中的魔术方法详解(双下方法)
    Django中Q查询及Q()对象
    Python3操作Excel
    漏洞复现环境集锦-Vulhub
    CVE-2019-0193 远程命令执行-漏洞复现
    Weblogic-SSRF 漏洞复现
    CVE-2020-0796 永恒之蓝?
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7476715.html
Copyright © 2011-2022 走看看