zoukankan      html  css  js  c++  java
  • 洛谷 P1255 数楼梯 高精度加法

    P1255 数楼梯

    • 时空限制1s / 128MB

    题目描述

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

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

    输入输出格式

    输入格式:

    一个数字,楼梯数。

    输出格式:

    走的方式几种。

    输入输出样例

    输入样例#1:
    4
    输出样例#1:
    5

    说明

    用递归会太慢,需用递推

    (60% N<=50 ,100% N<=5000)

    ----------------------------------------------------------------------------------------------------

    既然会打高精了,就应该会用高精做题

    注意n==0时走法数为0 (讲道理不走也算是一种走法吧)

    AC代码:

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #define maxn 5010
     5 using namespace std;
     6 struct BigNum{
     7     int s[2333],len;
     8     BigNum(){len=1;memset(s,0,sizeof(s));}
     9 };
    10 BigNum f[maxn];
    11 int n;
    12 void add(BigNum*,BigNum*,BigNum*);
    13 int main(){
    14     scanf("%d",&n);
    15     if(n==0){
    16         printf("0");
    17         return 0;
    18     }
    19     f[0].s[1]=1;
    20     f[1].s[1]=1;
    21     for(int i=2;i<=n;i++) add(&f[i-1],&f[i-2],&f[i]);
    22     for(int i=f[n].len;i>0;i--)
    23        printf("%d",f[n].s[i]);
    24     return 0;
    25 }
    26 void add(BigNum *x,BigNum *y,BigNum *z){
    27     z->len=max(x->len,y->len);
    28     for(int i=1;i<=z->len;i++){
    29         z->s[i]+=x->s[i]+y->s[i];
    30         z->s[i+1]=z->s[i]/10;
    31         z->s[i]%=10;
    32     }
    33     if(z->s[z->len+1]) z->len++;
    34 }
    高精度加法
  • 相关阅读:
    关于 iOS 证书,你必须了解的知识
    Spark踩坑记:共享变量
    Python 操作 MySQL 的正确姿势
    【黑客浅析】像黑客一样思考
    利用 Flask+Redis 维护 IP 代理池
    程序员的江湖:从黑木崖到回龙观
    [NM 状态机1] Application状态机详解
    Hadoop 2.0 编译问题小结
    Yarn上的几个问题整理
    Yarn中如何生成状态机图
  • 原文地址:https://www.cnblogs.com/lpl-bys/p/7784880.html
Copyright © 2011-2022 走看看