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 }
    高精度加法
  • 相关阅读:
    java连接mysql以及增删改查操作
    Django中ORM表的创建以及基本增删改查
    python链接mysql以及mysql中对表修改的常用语法
    Windows系统安装MySQL
    php 之 excel导出导入合并
    玄学基础
    ubuntu 17.10 安装QQ
    CI框架导入 excel
    atom插件安装
    excel怎么截取字符串
  • 原文地址:https://www.cnblogs.com/lpl-bys/p/7784880.html
Copyright © 2011-2022 走看看