SDUT2876_走楼梯(大数)

2024-09-04 08:48
文章标签 大数 楼梯 sdut2876

本文主要是介绍SDUT2876_走楼梯(大数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

走楼梯

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

小虎发现走楼梯的时候一次上一个台阶比较惬意,一次上两个台阶比较高效,一次上三个台阶就很累人。
小虎是一个即注重质量又注重高效的人,于是他就在上楼梯的时候每步就只跨上一个台阶或两个台阶,
现在小虎想知道他这样上n阶的楼梯一共有多少种走法,但是他又不想亲身经历,只好求助于会编程的你,帮他解决这个问题了。

输入

第一行是T,表示接下来有T组输入,每组输入一个N(2 <= N <= 1000)

输出

对应每组输入输出一共有多少种走法。

示例输入

3
10
9
22

示例输出

89
55
28657

提示

来源

解题报告
学了近半年的acm,一次校赛的热身赛题竟然不知道用大数写。。。sad。。。
#include <iostream>
#include <cstdio>
#include <cstring>using namespace std;
char dsf[1001][500]= {"0","1","2","3"};
int main()
{int a[500],b[500],i,j;for(i=3; i<=1000; i++){memset(a,0,sizeof(a));memset(b,0,sizeof(b));int l1=strlen(dsf[i-1]);int l2=strlen(dsf[i-2]);for(j=0; j<l1; j++)a[j]=dsf[i-1][l1-j-1]-'0';for(j=0; j<l2; j++)b[j]=dsf[i-2][l2-j-1]-'0';for(j=0; j<max(l1,l2); j++){a[j]+=b[j];if(a[j]>9){a[j]-=10;a[j+1]++;}}for(j=400; j>=0; j--){if(a[j]!=0){break;}}int l=j,ll=j;for(j=0; j<=l; j++)dsf[i][j]=a[ll--]+'0';dsf[i][j]=0;}int t,n;cin>>t;while(t--){cin>>n;cout<<dsf[n]<<endl;}return 0;
}


这篇关于SDUT2876_走楼梯(大数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135548

相关文章

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

Java验证辛钦大数定理

本实验通过程序模拟采集大量的样本数据来验证辛钦大数定理。   实验环境: 本实验采用Java语言编程,开发环境为Eclipse,图像生成使用JFreeChart类。   一,验证辛钦大数定理 由辛钦大数定理描述为: 辛钦大数定理(弱大数定理)  设随机变量序列 X1, X2, … 相互独立,服从同一分布,具有数学期望E(Xi) = μ, i = 1, 2, …, 则对于任意正数ε ,

找第K大数(ACdream 1099)

瑶瑶的第K大 Time Limit: 4000/2000MS (Java/Others)  Memory Limit: 256000/128000KB (Java/Others) Submit  Statistic  Next Problem Problem Description 一天,萌萌的妹子--瑶瑶(tsyao)很无聊,就来找你玩。可是你们都不知道玩什么。。。

【高精度】-DLUTOJ-1176-大数乘法

题目链接:http://acm.dlut.edu.cn/problem.php?id=1176 题目描述:赤裸的大数乘法 解题思路: 突然想到自己没写过高精度乘法,就回咱们自己OJ上找出了这道题,赤裸的高精度乘法而已,没想到依然觉得不好写,准确说来是我从小到大算乘法的习惯使我产生了错觉:“ 想写大数乘法就得先写一个大数加法出来 ”。喂!我短路了半天才想明白,int 数组里可以存个两位数啊,再

大数问题 *

问题 N : A + B Problem II 时间限制:1 秒内存限制:32 兆特殊判题: 否 提交:58解决: 10 标签 输入输出练习 题目描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.

大数求和问题

A + B Problem II Problem Description I have a very simple problem for you. Given two  integers(整数) A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains a

就一个简单的大数计算

也只是刚刚写出了加法,用的是1 000 000 000进制,不过发现对于加法还不如用最基本的方法方便。用1 000 000 000进制的方便也就在于处理乘法和除法了。计算机做乘除运算还是比较耗时的。 #include <random>#include <iostream>#include <fstream>#include <string>#include <vector>#inclu

HDU 1130(卡特兰数,大数)

题意:如题。   import java.util.*;import java.math.*;public class Main{public static void main(String[] args) {int n;Scanner in=new Scanner(System.in);BigInteger one=BigInteger.ONE;BigInteger four

HDU 1316(大数比较+二分)

大数比较+二分: #include<algorithm>#include<stdio.h>#include<string>#include<string.h>#include<math.h>#include<queue>#include<iostream>using namespace std;#define M 105char a[M+2],b[M+2];char book