ACM UVA-495

Fibonacci+dp

char ans[5001][3000];
using namespace std;
int main(int argc, char const* argv[])
{
    ans[0][0] = 0 ;
    ans[1][0] = 1; 
    int k;
    for(int i = 2;i <= 5000;i++){
        for(int j = 0;j<3000;j++){
            //printf("hello\n");
            ans[i][j] += ans[i-1][j]+ans[i-2][j];
            ans[i][j+1]  += ans[i][j]/10;
            ans[i][j] = ans[i][j]%10;
        }

    }
    int n;
    while(~scanf("%d",&n)){
        printf("The Fibonacci number for %d is ",n);
        int i = 2999;

        while(ans[n][i] == 0 && i >= 0) i--;
        if(i == -1){
            printf("0\n");
            continue;
        }

        while(i  >=  0)
            printf("%d",ans[n][i--]);
        printf("\n");

    }


    return 0;
}