• HDU 1250 Hat's Fibonacci


    Hat's Fibonacci

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


    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
    戴帽子的
    分析:这题用到大数相加,用数组的元素表示大数的各个数位的数字,(例如123,可以a[0]=3,a[1]=2,a[2]=1;)有个技巧是在网上学到的,每个数组元素存储八位数可以提高效率。先预处理,再输入数据。
    下面给出AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a[10000][260]={0};   //每个元素可以存储8位数字,所以2005位可以用260个数组元素存储。
     4 int main()
     5 {
     6     int i,j,n;
     7     a[1][0]=1;      //赋初值
     8     a[2][0]=1;
     9     a[3][0]=1;
    10     a[4][0]=1;
    11     for(i=5;i<10000;i++)
    12     {
    13         for(j=0;j<260;j++)
    14             a[i][j]+=a[i-1][j]+a[i-2][j]+a[i-3][j]+a[i-4][j];
    15         for(j=0;j<260;j++)                //每八位考虑进位。
    16             if(a[i][j]>100000000)
    17             {
    18                 a[i][j+1]+=a[i][j]/100000000;
    19                 a[i][j]=a[i][j]%100000000;
    20             }
    21     }
    22     while(scanf("%d",&n)!=EOF)
    23     {
    24         for(j=259;j>=0;j--)
    25             if(a[n][j]!=0) break;      //不输出高位的0
    26         printf("%d",a[n][j]);
    27         for(j=j-1;j>=0;j--)
    28             printf("%08d",a[n][j]);     //每个元素存储了八位数字,所以控制输出位数为8,左边补0
    29         printf("
    ");
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    POJ 3259 Wormholes【BellmanFord】
    POJ 2960 SNim【SG函数的应用】
    ZOJ 3578 Matrixdp水题
    HDU 2897 邂逅明下【bash博弈】
    BellmanFord 算法及其优化【转】
    【转】几个Java的网络爬虫
    thinkphp 反字符 去标签 自动加点 去换行 截取字符串 冰糖
    php 二维数组转 json文本 (jquery datagrid 数据格式) 冰糖
    PHP 汉字转拼音(首拼音,所有拼音) 冰糖
    设为首页与加入收藏 兼容firefox 冰糖
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/6511047.html
Copyright © 2020-2023  润新知