HDU 大数加 - 1250 Hat's Fibonacci
2015-05-22 20:17
197 查看
一个新的斐波那契数列,F(1) = 1, F(2) = 1, F(3) = 1,F(4) = 1, F(n>4) = F(n - 1) + F(n-2) + F(n-3) + F(n-4)
没什么可说的,大数加上,注意为了节省空间,我们使用滚动数组,一开始我还以为能一开始算出所有可能来节省时间,后来发现空间真是hold不住啊。。
没什么可说的,大数加上,注意为了节省空间,我们使用滚动数组,一开始我还以为能一开始算出所有可能来节省时间,后来发现空间真是hold不住啊。。
#include<stdio.h> #include<string.h> #define MAX 2010 int a[6][MAX]; void add(int x,int y){ int xlen= a[x][2009]; int len = a[y][2009]; int tlen=xlen; int i,j,temp; for(i=0;i<len;i++){ a[x][i] += a[y][i]; if(a[x][i]>9){ if(i==xlen-1){ tlen=len+1; } a[x][i]-=10; a[x][i+1]+=1; } } a[x][2009]=tlen; } int main(){ int i,n; while(scanf("%d",&n)!=EOF){ memset(a,0,sizeof(a)); for(i=0;i<4;i++){ a[i][0]=1; a[i][2009]=1; } for(i=4;i<=n;i++){ memcpy(a[i%5],a[(i-1)%5],MAX*sizeof(int)); add(i%5,(i-2)%5);add(i%5,(i-3)%5);add(i%5,(i-4)%5); } for(i=a[(n-1)%5][2009]-1;i>=0;i--){ printf("%d",a[(n-1)%5][i]); } printf("\n"); } }
相关文章推荐
- [大数] HDU 1250 - Hat's Fibonacci
- hdu 1250 Hat's Fibonacci (大数相加)
- HDU 1250 - Hat's Fibonacci(大数斐波那契)
- HDU 1250 Hat's Fibonacci (JAVA大数)
- hdu 1250 java大数练习
- HDU 1250 Hat's Fibonacci(大数相加)
- HDU 1250-Hat's Fibonacci(大数)
- HDU1250(大数相加)
- hdu1250(Java)大数相加的问题
- HDU1250~Hat's Fibonacci(大数加法)
- hdu 1250 Hat's Fibonacci(java大数)
- HDU 1250 Hat's Fibonacci(Java大数相加)+讲解
- HDU 1250(大数相加)
- hdu 1250(java大数)
- hdu 1250 大数Fibonacci
- hdu 1250 Hat's Fibonacci(java,简单,大数)
- HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)
- hdu 1250 Hat's Fibonacci (Java大数)
- hdu 1250 Hat's Fibonacci (大数相加,水题)
- HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)