博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 U3357 C2-走楼梯
阅读量:4641 次
发布时间:2019-06-09

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

题目背景

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

题目描述

方方方站在一个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
#define N 10000001#define mod 2333333using 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]);}

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7476715.html

你可能感兴趣的文章
第一周学习进度+四则运算1.0版
查看>>
baba 运动网
查看>>
for循环小练习
查看>>
JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
查看>>
教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
高血压吃什么好?
查看>>
Java for LeetCode 047 Permutations II
查看>>
React工作原理
查看>>
JS 获取当前时间
查看>>
bzoj3238 [Ahoi2013]差异
查看>>
ASP.NET常见面试题及答案(130题)
查看>>
初学CDQ分治-NEU1702
查看>>
React组件的生命周期
查看>>
java笔记--使用SwingWoker类完成耗时操作
查看>>
Android应用程序后台加载数据
查看>>
2016北京集训测试赛(九)Problem C: 狂飙突进的幻想乡
查看>>
CentOS6.5手动升级gcc4.8.2
查看>>
3.9 java基础总结集合①LIst②Set③Map④泛型⑤Collections
查看>>
Unix和Linux下C语言学习指南
查看>>
linux指令
查看>>