斐波那契数列第100项肯定很多位,常规的数据类型肯定存储不下,所以!!要进行换个思路!!即二维数组
反正我觉得这样还挺方便的咯
用二维数组的每一行存储每一项的值,从每一行的最后一列开始,如果>10就往前一列+1,以此类推
输出时,从第一列循环直到某列不为0为为止。
代码参考:https://blog.csdn.net/hg_zhh/article/details/66979683
#include<bits/stdc++.h>
using namespace std;
int num[103][30];
int main()
{
num[1][29]=1;//第一项
num[2][29]=1;//第二项
for(int i=3;i<=100;i++)
{
for(int j=29;j>=0;j--)//循环,数组行是从1开始,列是从0开始
{
if((num[i-1][j]+num[i-2][j])>=10)//进位,占多一个元素
num[i][j-1]+=1;
num[i][j]=num[i][j]+(num[i-1][j]+num[i-2][j])%10;
}
}
int j=0;
while(num[100][j]==0)j++;
for(int i=j;i<30;i++)
cout<<num[100][i];
return 0;
}