用大数加法实现斐波那契数列

E - Edge Case

F[3]=4;

F[4]=7;

F[5]=11;

依次类推,求[3,2000]的斐波那契数

#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<math.h>
using namespace std;
int n;
int F[10001][2500];

int main()
{
    memset(F, 0, sizeof(F));
    F[3][1] = 4, F[3][0] = 1;//F[i][0]表示的是第i个斐波那契数的长度
    F[4][1] = 7, F[4][0] = 1;
    for (int i = 5; i <= 10000; i++)
    {
        int in = 0;//进位
        int j;
        for (j = 1; j <= F[i - 1][0]; j++)
        {
            F[i][j] = F[i - 1][j] + F[i - 2][j] + in;
            in = F[i][j] / 10;
            F[i][j] = F[i][j] % 10;
            F[i][0]++;
        }
        if (in)
        {
            F[i][j] = in;
            F[i][0]++;
        }
    }
    while (cin >> n)
    {
        for (int j = F[n][0]; j >= 1; j--)
            cout << F[n][j];
        cout << endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/-citywall123/p/11307291.html

时间: 2024-09-29 17:20:19

用大数加法实现斐波那契数列的相关文章

HDU 1316 (斐波那契数列,大数相加,大数比较大小)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1316 Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n >= 3) Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b]. Input The input c

问题 : 来简单地数个数(大数模拟计算斐波那契数+区间数数)

题目描述 这是一个斐波那契数列: f1 = 1 f2 = 2 fn = fn-1 + fn-2    (n>=3) 蔡老板想知道,给你两个数 a.b,你能否求出在区间[a,b]里有多少个斐波那契数. 输入 多组数据输入.一行为一组输入数据,包括两个非负整数 a.b(a <= b <= 10^100),当a=b=0 时输入终止. 输出 对每组输入,输出单独一行,包含一个整数表示区间[a,b]里的斐波那契数个数. 样例输入 10 100 1234567890 9876543210 0 0 样

斐波那契数列(大数)

1216: 斐波那契数列 时间限制: 1 Sec  内存限制: 128 MB 点我 题目描述 Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3 计算第n项Fibonacci数值. 输入 输入第一行为一个整数n(1<=n<=10000). 输出 输出对应的f(n). 样例输入 1 2 3 4 5 样例输出 1 1 2 3 5 数组中每个元素存储3位,存储一位则内存超限,还有要注意每一个元素中前导为0时要把0输出,最高位则不需要,被这

ACM_无聊者序列(斐波那契数列大数+同余+规律)

Problem Description: 瓜瓜在玩着由红色和蓝色的大理石做成的玻璃珠,他将n个玻璃珠从左到右排成一个序列叫做无聊者序列.一个非空的红色和蓝色玻璃珠组成的序列是一个无聊者序列.这个序列的玻璃珠颜色是交替的,例如:序列(红色:蓝色:红色)和(蓝色)是一个无聊者序列.(红色:红色)不是无聊者序列.现在,瓜瓜想知道,从这个序列中选出一个无聊者子序列有多少种方法.并将它mod(1000000007). Input: 输入有多组数据,输入一个整数n(1 <= n <= 10^6),代表这个

hdu-5686 Problem B(斐波那契数列)

题目链接: Problem B Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Problem Description 度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列. Input 这里包括多组测试数据,每组测试数据包含一个正整数N,代表全1序列的长度.

HDU 1316 斐波那契数列+高精度

How Many Fibs? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4235    Accepted Submission(s): 1669 Problem Description Recall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1

斐波那契数列——矩阵的幂求解

题目: 斐波那契数列的递推公式如下: F(0) = 0; F(1) = 1; F(n + 2) = F(n + 1) + F(n); 求数列的第N项的值对10000取余的结果.( 0<=n<= 10^16) 求解斐波那契数列,如果N比较小的情况下,可以直接打表求解,但是对于N很大的情况下,并不适用. 所以,有些人会想到高精度计算,但是,N达到10^5以上时,时间复杂度难以想象,每计算一个数,需要进行高精度加法.然而还有求解对10000的取余的值. 我们可以用矩阵的幂来求解.斐波那契数列的递推公

M斐波那契数列(矩阵快速幂+费马小定理)

M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1672    Accepted Submission(s): 482 Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a,

斐波那契数列(公式)

http://acm.hdu.edu.cn/showproblem.php?pid=1568 Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3947    Accepted Submission(s): 1817 Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终