加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

斐波那契数列第N项(大数)

发布时间:2020-12-14 03:05:31 所属栏目:大数据 来源:网络整理
导读:#include stdio.h #include string.h #include stdlib.h int a[1005][300]; ?//用二维数组的行来记录每项数据,行标表示第几项数据 int main() { ? ? memset(a,sizeof(0)); ? ? int i,n,k,bj; ? ? a[1][0]=1,a[2][0]=2,a[3][0]=3; ? ? for(i=4; i=1000; i++)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int a[1005][300]; ?//用二维数组的行来记录每项数据,行标表示第几项数据


int main()
{
? ? memset(a,sizeof(0));
? ? int i,n,k,bj;
? ? a[1][0]=1,a[2][0]=2,a[3][0]=3;
? ? for(i=4; i<=1000; i++)
? ? {
? ? ? ? for(k=0; k<300; k++)
? ? ? ? {
? ? ? ? ? ? a[i][k]+=a[i-1][k]+a[i-2][k]; ?//用来求前两项的和,如果数组中每个小单元里面的数大于9,则进位
? ? ? ? ? ? if(a[i][k]>9)
? ? ? ? ? ? ? ? a[i][k+1]+=a[i][k]/10;//这里是进位
? ? ? ? ? ? a[i][k]%=10;
? ? ? ? }
? ? }
? ? while(~scanf("%d",&n)) ?//输入到文件结束
? ? {
? ? ? ? for(bj=299; bj>=0; bj--) ? ?//用来去除前导0 ?标记从右往左第一个不是0的位置
? ? ? ? ? ? if(a[n][bj])
? ? ? ? ? ? ? ? break; ??
? ? ? ? for(i=bj; i>=0; i--) ? ? //打印输出
? ? ? ? ? ? printf("%d",a[n][i]);
? ? ? ? puts("");
? ? }
? ? return 0;

}

//这里只求到了第1000项,如果求更大的项,要把行和列扩大,行长度至少保证大于第N项数据的长度

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读