P1255 数楼梯——真AC代码

luoguP1255 【数楼梯】 P1255 【数楼梯】传送门题目描述楼梯有N 阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。输入输出格式输入格式:一个数字,楼梯数。输出格式:走的方式几种。输入输出样例输入样例#1: 4输出样例#1: 5说明用递归会太慢,需用递推(60 % N<=50 ,100 % N<=5000 )又可以和大家见面了。这道题小菜鸡大约用了半个小时(30 分钟)。唉,... 阅读详情

题目描述

楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。

编一个程序,计算共有多少种不同的走法。

输入格式

一个数字,楼梯数。

输出格式

输出走的方式总数。

输入输出样例

输入 #1

4

输出 #1

5

说明/提示

  • 对于 60% 的数据,N≤50;
  • 对于 100% 的数据,1≤N≤5000。

分析

当我们走上一级楼梯时,一共的方案总数就等于前一阶楼梯加上前一阶的前一阶也就是前一阶的前一阶的前一阶的前一阶...加前一阶的前一阶的前一阶的前一阶的前一阶的前一阶...,因此要用到斐波那契数列。fib数列:f[i]=f[i-1]+f[i-2];     

 除此之外,因为题中的值太大了,所以还要用到高精度加法。

AC代码

#include<bits/stdc++.h>//万能头文件
using namespace std;//使用标准命名空间
int f[5050][5050],w=1;    //f[m][i]表示m阶台阶对应的方法数,i表示数位 ,w表示位数
void hpl(int m)    //高精度加法,m表示阶数 
{
    for(int i=1;i<=w;i++)
        f[m][i]=f[m-1][i]+f[m-2][i];    //斐波那契数列
    for(int i=1;i<=w;i++)    //遍历每一个数位 
    {
        if(f[m][i]>=10)    //如果该数位大于等于10则进位 
        {
            f[m][i+1]+=f[m][i]/10;
            f[m][i]%=10;
            if(f[m][w+1])    //如果进位后还有其它方法则位数加1 
                w++;
        }
    }
}
int main() 
{
    int n;
    scanf("%d",&n);

    //斐波那契数列1,2位
    f[1][1]=1;    //一阶有一种 
    f[2][1]=2;    //二阶有两种 
    for(int i=3;i<=n;i++)
        hpl(i);        //调用高精度加法的函数 
    for(int i=w;i>=1;i--)    //倒序输出 
        printf("%d",f[n][i]);
    return 0;
}

题解:洛谷 B2144 阿克曼(Ackermann)函数 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。阿克曼(Ackermann)函数。本文分享的必刷题目是从。#入门# #语法基础# 阅读详情

相关推荐

Logisim实战:手把手教你设计硬布线版MIPS CPU(多周期/8指令/附电路图)

本文是一份详细的Logisim实战指南,手把手教你设计一个采用硬布线控制的多周期MIPS CPU。文章深入剖析了硬布线控制与微程序控制的核心理念差异,并逐步讲解了从定义执行状态、构建状态跳转逻辑到生成控制信号、集成测试的完整流程,最终实现一个支持8条指令、可运行简单程序的处理器模型。

g9h0i1的博客 592

C++——数楼梯(动态规划+高精度压缩)

C++动态规划——数格子

Fizzoa的博客 1501

关于token无痛刷新的两个方案

目录方案一方案二 方案一 思路: 后端需要返回一个token过期的时间,在请求发起前拦截每个请求,判断token的有效时间是否已经过期,如果已过期,则暂时将请求挂起,先刷新token后再继续请求。 前期思考: 返回过期时间是为了判断是否过期的,但是如果服务器时间和系统时间不一致呢? 如果同时发起多个请求时怎么办? 实现: 因为是在请求前进行拦截,所以这里用axios的axios.interceptors.request.use()方法 首先,关于服务器时间和系统时间不一致的问题,我的解决方法是:

Yugoup的博客 2716

3-5 数楼梯(高精度算法)c++

楼梯有N阶,上楼可以一步上一阶,也可以一步上两阶。那么走到第N阶楼梯共有多少种不同的走法呢? 输入格式: 一个正整数 N(1<=N<=5000),表示楼梯阶数。 输出格式: 输出一个数,表示走到第N阶楼梯有多少种走法。 注意,数据范围很大,即使是64位也可能不够存。 输入样例1: 4 输出样例1: 5 输入样例2: 400 输出样例2: 284812298108489611757988...

qq_45788060的博客 1474

PID调参避坑手册:用APM/PX4飞控让无人机稳如老狗

本文提供了一份针对APM/PX4飞控的PID调参实战指南。文章从理解PID控制原理出发,详细解析了级联控制结构,并给出了从内环到外环的五步调参流程与数据日志分析方法,帮助无人机爱好者避开常见误区,实现稳定飞行。

red88的博客 874

Abaqus 气动软体抓取器:从超弹性材料建模到抓取力仿真全流程解析

本文详细解析了Abaqus在气动软体抓取器仿真中的应用全流程,涵盖超弹性材料建模、接触设置优化到抓取力仿真等关键环节。通过实战案例分享Yeoh模型参数拟合、不可伸展层建模技巧及收敛优化策略,帮助工程师高效解决有限元仿真中的常见问题,提升软体机器人研发效率。

weixin_28689193的博客 238

c++数楼梯问题的新思路--dfs

我用dfs只做了50,剩下没过,我看了题解大部分用的是斐波那契数列+高精,但是我感觉我这种方法也是一种思路啊,所以我还是决定把它发出来记录一下,请大家批评指正!一开始我并没有想到斐波那契数列这种规律,这道题是走一步或者两步,但是如果是还能一下走三步呢,这是我们只需要更改我们部分代码即可,如。但这时斐波那契数列就不能用了。这里提前祝大家新年快乐!

2301_79249663的博客 652

可视化工具--Plotly

随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,要想快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对于Python语言来说,比较传统的数据可视化模块是Matplotlib,但它存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化方面的发展。   为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。

YFater的博客 1万+

C++爬楼梯题解

爬楼梯题目难度:中阶时间限制:1000ms内存限制:128MB。

MC_优快云O的博客 334

Scrapy实现微博关键词爬虫(爬虫结果写入mongodb)

话不多说,上代码: spiders文件夹下的microBlogSpider.py里这样写: # -*- coding: utf-8 -*- import scrapy from scrapy import Spider, Request, FormRequest from scrapy.selector import Selector import datetime import random from blogSpider.items import microBlogItem, keyWordItem f

qq_39360565的博客 1779

《嵌入式-STM32开发指南》第三部分 外设篇 - 第2章 温度传感器DS18B20

2.1 理论分析 2.1.1概述 DS18B20 是 DALLAS 最新单线数字温度传感器,新的"一线器件"体积更小、适用电压更宽、更经济。Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 "一线总线"接口的温度传感器。 DS18B20采用的单总线协议,也就是只需占用主机一个I/O口,无需其他外围电路,直接将环境温度转换为数字信号,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。另外,以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量

不问归期的博客 8305

【题解】【洛谷P1255】【递推】——数楼梯

想要模拟每一种到最后一阶的方法然后累加是不行的,需要花费的时间太长了。最后,由于数字比较大,需要使用高精度数存储。(其实可以发现,它和斐波那契数列有着异曲同工之妙。阶,上楼可以一步上一阶,也可以一步上二阶。时,只需要一步就可以跨上去了。编一个程序,计算共有多少种不同的走法。不过可以发现,想要走到第。阶的方法数就是走到第。

Pantheraonca的博客 1029

lammps后处理:ovito选择原子高级技巧讲解

大家好,我是小马老师。 本文介绍如何在ovito中使用公式(Expression)选择需要的原子。 用ovito查看lammps模拟结果时,可能会遇到选择特定原子的情况,比如选择坐标位于一定范围内的原子,或者选择结构为fcc的原子等等。 这时候,就需要用到expression selection功能。 Expression selection功能比较强大,下面分别介绍几种选择原子的方法。 在输入公式前,先点击“Add modification”->"Expression selection"选项,在B

lammps_jiayou的博客 2万+

洛谷 P1255 数楼梯

首先,我们假设从第零个楼梯开始走,目前在第1个楼梯,那么我们只有一种走法;当我们在第三个楼梯时,我们可以有3种走法(1+2)可以走;当我们在第4个楼梯时,我们有5种走法(2+3)可以走,以此类推,我们不难发现有2个以上楼梯时,我们的走法可以由前两个楼梯的走法相加求得。我们定义一个数组,让第1和2个楼梯的走法设为1和2,那我们可以使用一遍循环(时间复杂度O(N))求得最终答案。假设我们要求第i个楼梯的走法,我们让数组中i-1个楼梯的走法和i-2个楼梯的走法求和并且赋给i个楼梯的走法。

2301_80097874的博客 1384

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

P1255 数楼梯【递推+大数】

楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。

海岛Blog 1331

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数楼梯详解|高精度斐波那契与大数处理完全指南(洛谷P1255)

掌握高精度加法实现斐波那契数列,O(n)复杂度解决大数爬楼梯问题,附通过洛谷测试的C++竞赛级代码

stillwatersss的博客 784

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

P1255 数楼梯

P1255 数楼梯 题目描述 楼梯有 NN 阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 输入格式 一个数字,楼梯数。 输出格式 输出走的方式总数。 输入输出样例 输入 #1复制 4 输出 #1复制 5 说明/提示 对于 60%60% 的数据,N≤50; 对于 100%100% 的数据,N≤5000。 思路 题目很简单,当时看到这题第一眼想到递归去搞,然后tle,打个1到30的表,发现是斐波那契 for循环+高精度过。 AC代码 #include"bits/st

qq_51316118的博客 482

【洛谷】P1255 数楼梯(Java,DP动态规划,递推,BigInteger)

P1255 数楼梯 题目描述 楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 输入格式 一个数字,楼梯数。 输出格式 输出走的方式总数。 输入输出样例 输入 #1 4 输出 #1 5 说明/提示 对于 60% 的数据,50N≤50; 对于 100% 的数据,1≤N≤5000。 这题一般使用DP动态规划+递推来解决 定义一个[n+1]长度的数组来存放 方法数 a[n]表示第n级台阶总共几种走法 以下是洛谷有WA50分的代码 import java.util.

花开淡墨Cc的博客 803

洛谷-P1255 数楼梯

题目描述 楼梯有NN阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 输入格式 一个数字,楼梯数。 输出格式 输出走的方式总数。 输入输出样例 输入 #1复制 4 输出 #1复制 5 说明/提示 对于60\%60%的数据,N \leq 50N≤50; 对于100\%100%的数据,N \leq 5000N≤5000。 分析: 说实话这题我真的快写吐了,刚拿到的时候,开心的一批,递推第一篇第一题,这么水的吗,不禁想起当年初次...

weixin_43098069的博客 885

P1255 数楼梯(每日一题——递归、高精度)

????P1255 数楼梯 ????题解 这道题很直观的是一道递归问题,第n个台阶的方式总数等于第n-1个台阶方式数加第n-2个台阶方式总数,但是,从题干的数据量来看,我们需要使用高精度的加法(当然了,直接用python写也是很香的) ???? AC 代码: #include<iostream> using namespace std; int n,f[5010][5010],len; void add(int k) { for(int i=1; i<=len; i++)

qq_49288154的博客 1014

洛谷P1255 数楼梯

一道难度一般的dp+高精橙题……

qq_28865663的博客 567

P1255 数楼梯(高精度加法 + 斐波那契)

题的链接:P1255 数楼梯 题目描述 楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。 编一个程序,计算共有多少种不同的走法。 输入格式 一个数字,楼梯数。 输出格式 走的方式几种。 输入输出样例 输入 #1复制 4 输出 #1复制 5 说明/提示 60% N<=50 100% N<=5000) 题解: 就是斐波那契数列的变形,n = 1,s = 1;n = 2,s = 2 ; n...

小牛的博客 915

【暑期每日一题】洛谷 P1255 数楼梯

对于100%的数据,1

m0_57587757的博客 324
上一篇: P1044 [NOIP2003 普及组] 栈 AC+思路
下一篇: P1928外星密码
simba_2011
博客等级 码龄3年 239粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值