HDU 1250 Hat's Fibonacci(大数相加)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1250

Hat‘s Fibonacci

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 12952    Accepted Submission(s): 4331

Problem Description

A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1.
F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
Your task is to take a number as input, and print that Fibonacci number.

Input

Each line will contain an integers. Process to end of file.

Output

For each case, output the result in a line.

Sample Input

100

Sample Output

4203968145672990846840663646

Note:
No generated Fibonacci number in excess of 2005 digits will be in the test data, ie. F(20) = 66526 has 5 digits.

Author

戴帽子的

分析:

大数相加的模板题!

code:

#include<bits/stdc++.h>
using namespace std;
#define max_v 10005

string add(string s1,string s2)

{

    if(s1.length()<s2.length())

    {

        string temp=s1;

        s1=s2;

        s2=temp;

    }

    int i,j;

    for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)

    {

        s1[i]=char(s1[i]+(j>=0?s2[j]-‘0‘:0));   //注意细节

        if(s1[i]-‘0‘>=10)

        {

            s1[i]=char((s1[i]-‘0‘)%10+‘0‘);

            if(i) s1[i-1]++;

            else s1=‘1‘+s1;

        }

    }

    return s1;

}

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        string p[n+5];
        if(n<=4)
        {
            printf("1\n");
            continue;
        }
        p[1]="1";
        p[2]="1";
        p[3]="1";
        p[4]="1";
        for(int i=5; i<=n; i++)
        {
            p[i]=add(p[i-1],add(p[i-2],add(p[i-3],p[i-4])));
        }
        cout<<p[n]<<endl;
    }
    return 0;
}

HDU 1250 Hat's Fibonacci(大数相加)

原文地址:https://www.cnblogs.com/yinbiao/p/9326353.html

时间: 2024-12-05 09:55:42

HDU 1250 Hat's Fibonacci(大数相加)的相关文章

HDOJ/HDU 1250 Hat&#39;s Fibonacci(大数~斐波拉契)

Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) Your task is to take

HDU 1250 Hat&#39;s Fibonacci(Java大数相加)+讲解

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n -

hdu 1250 Hat&#39;s Fibonacci (大数相加)

//a[n]=a[n-1]+a[n-2]+a[n-3]+a[n-4]; # include <stdio.h> # include <algorithm> # include <string.h> # include <iostream> using namespace std; int a[10000][260]={0}; //每个元素可以存储8位数字,所以2005位可以用260个数组元素存储. int main() { int i,j,n; a[1][0

HDU 1250 Hat&#39;s Fibonacci (递推、大数加法、string)

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14776    Accepted Submission(s): 4923   Problem Description A Fibonacci sequence is calculated by adding the previous two members

hdu 1250 Hat&#39;s Fibonacci

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9677 Accepted Submission(s): 3210 Problem Description A Fibonacci sequence is calculated by adding the previous two members the seque

hdu 1250 Hat&#39;s Fibonacci(高精度数)

//  继续大数,哎.. Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) Your tas

HDU1250 Hat‘s Fibonacci (大数相加)(Java题解)

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14587    Accepted Submission(s): 4853 Problem Description A Fibonacci sequence is calculated by adding the previous two members th

hdu 1250 Hat&amp;#39;s Fibonacci

点击此处就可以传送hdu 1250 Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequence, with the first two members being both 1. F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4) You

hdoj 1250 Hat&#39;s Fibonacci 【高精度】

Fibonacci... 策略:用Java 做这道题较简单一些,但是,C语言是基础. 用java的话,就是最简单的BigInteger的使用. 下面简单讲一下C语言的做法: 一个12位的整数,可以表示为,3个四位的整数的集合,例如123412341234就可以转化为1234, 1234, 1234.下面的就是按照此原理做的. c代码: #include <stdio.h>//每一个int都代表6个数. #include <string.h> #define M 10000 int