C++高精度求斐波那契数列第N项

Description
求斐波那契数列第N项。 3 \le N \le 10003≤N≤1000。

Input
一个正整数N。

Output
斐波那契数列第N项。

Samples
输入数据 1
30
输出数据 1
832040
输入数据 2
100
输出数据 2
354224848179261915075
Tips
1,1,2,3,5,8,…1,1,2,3,5,8,…

#include <bits/stdc++.h>
using namespace std;
const int mx=110;
int n;
int   a[mx],b[mx],c[mx];
int main()
{
    
    
	cin>>n;
	for (int i=0; i<=mx-1; i++) a[i]=b[i]=c[i]=0;
	a[0]=b[0]=1;
	for (int i=3; i<=n; i++)
		{
    
    

			for (int i=0; i<=mx-1; i++)c[i]=0;
			for (int i=0; i<=mx-1; i++)c[i]=a[i]+b[i];
			for (int i=0; i<=mx-2; i++)
				{
    
    
					int x=c[i];
					c[i]=x%10;
					c[i+1]+=x/10;
				}

			for (int i=0; i<=mx-1; i++)a[i]=b[i];
			for (int i=0; i<=mx-1; i++)b[i]=c[i];
		}
		int i=mx-1;
		while (c[i]==0 && i>0) i--;
	for (;i>=0; i--) cout<<c[i];
	return 0;
}

猜你喜欢

转载自blog.csdn.net/yaosichengalpha/article/details/131573589