HDU 1250 Hat's Fibonacci (+=)
来源:互联网 发布:js replaceall 编辑:程序博客网 时间:2024/05/19 20:01
#include <stdio.h>int p[8000][255]={0};int i,n,j;int main() //大数加法{ for (i=1;i<5;i++) { p[i][1]=1; } for (;i<8000;i++) { for (j=1;j<255;j++) { p[i][j]+=p[i-1][j]+p[i-2][j]+p[i-3][j]+p[i-4][j]; p[i][j+1]+=p[i][j]/100000000; p[i][j]%=100000000; } } while (scanf("%d",&n)!=EOF) { j=254; while (j>0) if(p[n][--j]) break; printf("%d",p[n][j--]); while (j>=1) { printf("%08d",p[n][j--]); //08不能少,我经常会犯这样的错误 } printf("\n"); } return 0;}
数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般为几十KB,所以太大的数组会耗光栈空间。
而全局变量占用的堆空间,堆空间中的内存是按需分配,自由增长的,可以非常大,32位的系统中可以大到4GB。 堆空间是malloc()的。 全局变量是在编译的时候编到数据段的,可以比较大。
代码二;2015 7 11 重做
#include <iostream>using namespace std;int fib[8000][301];void caulate(){ for (int i=5;i<8000;i++) {for (int j=1;j<300;j++){fib[i][j] += fib[i-1][j]+fib[i-2][j]+fib[i-3][j]+fib[i-4][j];//注意+=而不是=fib[i][j+1] += (fib[i][j]/10000000);fib[i][j] %= 10000000;} }}int main(){ fib[1][1]=fib[2][1]=fib[3][1]=fib[4][1]=1; int n,i;caulate();while (cin>>n){i=299;while (!fib[n][i]) i--;cout<<fib[n][i--];for (;i>=1;i--){printf("%07d",fib[n][i]);}cout<<endl;}return 0;}
0 0
- HDU 1250 Hat's Fibonacci (+=)
- hdu 1250 Hat's Fibonacci
- HDU 1250 Hat's Fibonacci
- Hdu 1250 Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- HDU 1250-Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- hdu-1250-Hat's Fibonacci
- Hdu---Hat's Fibonacci---1250
- hdu 1250 Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- HDU 1250: Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- hdu 1250 Hat's Fibonacci
- hdu-1250-Hat's Fibonacci
- HDU 1250 Hat's Fibonacci
- 【SICP练习】32 练习1.38
- 【SICP练习】33 练习1.39
- 【SICP练习】35 练习1.40
- 【SICP练习】36 练习1.41
- 问答中关于C语言中共同体(联合体)的问题
- HDU 1250 Hat's Fibonacci (+=)
- HDU 1248 寒冰王座
- 【SICP练习】37 练习1.42
- PCB设计中路的反射和场的反射
- 【SICP练习】38 练习1.43
- 接地电阻测试方法
- 【SICP练习】39 练习1.44
- 【SICP练习】40 练习1.45
- 【SICP练习】41 练习1.46