斐波那契数列第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项数据的长度 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |