您的位置:首页 > 其它

Problem 25 1000-digit Fibonacci number (高精度fibonacci)

2016-10-28 22:14 344 查看


1000-digit Fibonacci number


Problem 25

The Fibonacci sequence is defined by the recurrence relation:

Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:

F1 = 1

F2 = 1

F3 = 2

F4 = 3

F5 = 5

F6 = 8

F7 = 13

F8 = 21

F9 = 34

F10 = 55

F11 = 89

F12 = 144
The 12th term, F12, is the first term to contain three digits.

What is the index of the first term in the Fibonacci sequence to contain 1000 digits?

Answer:
4782
Completed on Fri, 28 Oct 2016, 06:13
题解:高精度fibonacci。

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

class BigNumber  //大数类
{
private:
int num[1000];

public:
BigNumber(int tmp)
{
for(int i=999; i>=0; i--) //1000位
{
num[i] = tmp%10;
tmp /=10;
}
}

public:
bool isThousand()
{
return num[0]>0;
}
BigNumber operator+(const BigNumber& bigNumber)
{
BigNumber sum(0);
int tmp;
int over =0;
for(int i=999; i>=0; --i)//1000位
{
tmp = num[i]+bigNumber.num[i]+over;
sum.num[i] = tmp%10;
over = tmp/10;
}
return sum;
}

void print()  //打印输出结果
{
for(int i=0; i<1000; i++)
{
cout << num[i];
}
cout<<endl;
}
};

int main()
{
BigNumber A1(1);
BigNumber A2(1);
int i=2;
while(1)
{
i++;
A1 = A1+A2;
if(A1.isThousand())
{
break;
}

i++;
A2 = A1+A2;
if(A2.isThousand())
{
break;
}
}
cout<<i<<endl;
return 0;

}


评论区的数学方法:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: