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 }
    高精度加法
  • 相关阅读:
    bzoj 1031: [JSOI2007]字符加密Cipher
    python re模块实现计算器
    python sys模块和序列化模块
    python time时间模块
    python 发红包的小程序
    python ranndom模块及生成验证码
    python os模块练习题
    python os模块常用命令
    快速排序,归并排序
    选择排序和插入排序
  • 原文地址:https://www.cnblogs.com/lpl-bys/p/7784880.html
Copyright © 2011-2022 走看看