斐波那契数列(大数)

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输出,最高位则不需要,被这个给坑了

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 #define len 100000000
 6 int a[10001][1000];
 7 int main()
 8 {
 9     int n,c,i,j;
10     memset(a,0,sizeof(a));
11     a[1][0]=a[2][0]=1;
12     for(i=3;i<10001;i++)
13     {
14         c=0;
15         for(j=0;j<=999;j++)
16         {
17             a[i][j]=(a[i-2][j]+a[i-1][j]+c)%len;
18             c=(a[i-2][j]+a[i-1][j]+c)/len;
19         }
20     }
21     while(cin>>n)
22     {
23         for(i=999;i>=0;i--)
24             if(a[n][i]!=0)
25                 break;
26         cout<<a[n][i];
27         for(i--;i>=0;i--)
28         {
29             printf("%08d",a[n][i]);
30         }
31         cout<<endl;
32     }
33 }
时间: 2024-10-17 15:55:32

斐波那契数列(大数)的相关文章

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

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

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

斐波那契数列(公式)

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终

【C++】 斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,(n = 0) F(1)=1,(n = 1) F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5

【C++】 斐波那契数列那点事

斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义: F(0)=0,(n = 0) F(1)=1,(n = 1) F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5

LeetCode | 面试题10- I. 斐波那契数列【剑指Offer】【Python】

LeetCode 面试题10- I. 斐波那契数列[剑指Offer][Easy][Python][动态规划] 问题 力扣 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10000000

用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现)

费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数.斐波那契数列.费氏数列.黄金分割数列. 在数学上,费波那契数列是以递归的方法来定义: {\displaystyle F_{0}=0} {\displaystyle F_{1}=1} {\displaystyle F_{n}=F_{n-1}+F_{n-2}}(n≧2) 用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出.首几个费波那契系数是: 0, 1, 1, 2, 3

Fibonacci斐波拉契数列----------动态规划DP

n==10 20 30 40 50 46 体验一下,感受一下,运行时间 #include <stdio.h>int fib(int n){ if (n<=1)     return 1; else            return fib(n-1)+fib(n-2); }int main( ){ int n; scanf("%d",&n); printf("%d\n" ,fib(n) );} 先 n==10 20 30 40 50 46

《剑指Offer》题目——斐波拉契数列

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.(n<=39) 题目分析:如果使用简单的递归,很容易造成栈溢出.采用递推的方式即可. 代码: public class Fibonacci { public static int fibonacci(int n){ int res[] = new int[2]; res[0]=1; res[1]=1; int temp = 0; if(n==0) return 0; if(n<=2) return res[