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.

纪念构建大数模板成功!!!!!(大一上学期写的,所以代码有点糙,献丑了0.0)

代码:
#include

using namespace std;

vectorv;

string big_num(string nl,string ml)

{

    //cout<<nl<<" "<<ml<<endl;

    string str="";

    int t,len,lon,j,x=1,l,m[2050],n[2050];

    memset(m,0,sizeof m);

    memset(n,0,sizeof n);

    j=0;

    len=nl.size();

    lon=ml.size();

    for(int i=len-1;i>=0;i--)

    {

        n[i]=nl[j++]-'0';

        //cout<<n[i]<<endl;

    }

    j=0;

    for(int i=lon-1;i>=0;i--)

    {

        m[i]=ml[j++]-'0';

    }

    if(len

    l=lon;

    else

    l=len;

    for(int j=0;j<=l-1;j++)

    {

        n[j]+=m[j];

        if(n[j]>=10)

        {

            n[j+1]=n[j+1]+1;

            n[j]=n[j]-10;

        }

    }

    if(n[l]==0)

    {

        //cout<<n[0]<<endl;

        for(int i=l-1;i>=0;i--)

        {

            str+=(n[i]+'0');

            //cout<<str<<endl;

            //cout<<n[i];

        }

        return str;

    }

    else

    {

        for(int i=l;i>=0;i--)

        {

            str+=(n[i]+'0');

            //cout<<str<<endl;

        }

        //cout<<n<<endl;

        return str;

    }

}

void solve()

{

    v.push_back("1");

    v.push_back("1");

    v.push_back("1");

    v.push_back("1");

    v.push_back("1");

    for(int i=5;;i++)

    {

        //cout<<v[i-1]<<" "<<v[i-2]<<" "<<v[i-3]<<" "<<v[i-4]<<endl;

        v.push_back(big_num(big_num(v[i-1],v[i-2]),big_num(v[i-3],v[i-4])));

       // cout<<"前四项为:";

        //cout<<v[i-1]<<" "<<v[i-2]<<" "<<v[i-3]<<" "<<v[i-4]<<endl;

        //cout<<"和为:";

        //cout<<v[i]<<endl;

        if(v[i].size()>2006)

            return;

    }

}

int main()

{

    //freopen("in.txt", "r", stdin);

    solve();

    int n;

    while(scanf("%d",&n)!=EOF)

    {

        //cout<<"前四项为:";

        //cout<<v[n-1]<<" "<<v[n-2]<<" "<<v[n-3]<<" "<<v[n-4]<<endl;

        //cout<<"和为:";

        cout<<v[n]<<endl;

    }

    return 0;

}


Hat's Fibonacci的更多相关文章

  1. hdu 1250 Hat's Fibonacci

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1250 Hat's Fibonacci Description A Fibonacci sequence ...

  2. Hat's Fibonacci(大数,好)

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  3. Hat's Fibonacci(大数加法+直接暴力)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 hdu1250: Hat's Fibonacci Time Limit: 2000/1000 M ...

  4. (二维数组 亿进制 或 滚动数组) Hat's Fibonacci hdu1250

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. HDUOJ----1250 Hat's Fibonacci

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

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

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Ot ...

  7. HDU 1250 Hat's Fibonacci (递推、大数加法、string)

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. hdu 1250 Hat's Fibonacci(高精度数)

    //  继续大数,哎.. Problem Description A Fibonacci sequence is calculated by adding the previous two membe ...

  9. HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  10. HDU1250:Hat's Fibonacci

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

随机推荐

  1. myeclipse一些快捷键 错了或者没说到补充下

    Ctrl + 1 快速修复Ctrl + D  删除当前行 Ctrl + Alt + ↓ 复制当前行到下一行(复制增加)Ctrl + Alt + ↑ 复制当前行到上一行(复制增加)Alt + ↓ 当前行 ...

  2. 集成Mybatis

    本文根据个人喜好记录"腾讯课堂"的<Java项目之Maven+SpringMVC+Spring+Mybatis+MySql消费查询系统>视频教程关键步骤信息,视频地址: ...

  3. C++移动构造函数以及move语句简单介绍

    C++移动构造函数以及move语句简单介绍 首先看一个小例子: #include <iostream> #include <cstring> #include <cstd ...

  4. 01.python基础知识_01

    一.编译型语言和解释型语言的区别是什么? 1.编译型语言将源程序全部编译成机器码,并把结果保存为二进制文件.运行时,直接使用编译好的文件即可 2.解释型语言只在执行程序时,才一条一条的解释成机器语言给 ...

  5. 机器学习 数据挖掘 推荐系统机器学习-Random Forest算法简介

    Random Forest是加州大学伯克利分校的Breiman Leo和Adele Cutler于2001年发表的论文中提到的新的机器学习算法,可以用来做分类,聚类,回归,和生存分析,这里只简单介绍该 ...

  6. python --- socket模块详解

    socket常用功能函数: socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)                  ...

  7. javascript特效300例----抄书喽

    -javascript300例- #body_div { background-color: #202425; color: white; margin: 0 auto; border: 5px gr ...

  8. mysql导出数据库和恢复数据库代码

    mysql导出数据库和备份数据库 用mysqldump 命令行 命令格式 mysqldump -u 用户名 -p  数据库名 > 数据库名.sql 范例: mysqldump -uroot -p ...

  9. (10.16)java小作业!

    相信大家刚刚学习java多多少少都会写一些java的基础编程来练练手感,我也不例外!今天想和大家分享一下我最近所接触到的比较有趣的java小编程! 已知a已被赋值,b已被赋值,请编写java程序实现a ...

  10. Install Ubuntu On Windows10(win10上安装linux系统)

    一.准备: 硬件:U盘 软件:ultraiso.Ubuntu镜像文件 二.安装linux: 1.Ubuntu官网(http://www.ubuntu.org.cn/download/alternati ...