Code

2018年1月28日 星期日

UVA 495 Fibonacci Freeze

#include<stdio.h>

#define MAX 5001
int main(int argc, const char * argv[]) {

    int n, i, j, k;

    int ans[MAX][3001] = {0};

    ans[0][3000] = 0;

    ans[1][3000] = 1;

    for (i = 2; i <= MAX-1; i++) {

        for (j = 3000; j >= 0; j--) {

            ans[i][j] = ans[i-1][j] + ans[i-2][j];

        }

        for (j = 3000; j >= 1; j--) {

            if (ans[i][j] >= 10) {

                ans[i][j-1] += ans[i][j]/10;

                ans[i][j] %= 10;

            }

        }

    }

    while (scanf("%d", &n) != EOF) {

        printf("The Fibonacci number for %d is ", n);

        if (n == 0) {

            printf("0\n");

        }

        else {

            for (k = 0; ans[n][k] == 0; k++);

            for (j = k; j <= 3000; j++) {

                printf("%d", ans[n][j]);

            }

            printf("\n");

        }

    }

    return 0;
}
此code在UVa可Accepted,但在電腦上執行,可能會出現EXC_BAD_ACCESS的error

理由是電腦沒辦法分配出太大的連續記憶體(5001*3001*4 bytes)

解決方法應該是使用動態配置

沒有留言:

張貼留言