-10

原文页面:http ://acm.whu.edu.cn/learn/problem/detail?problem_id=1036

这应该是一个简单的动态规划问题。我想出解决方案如下:

int main(void)
{
    double d[501];
    int i;
    d[0] = d[1] = 1.;
    d[2] = 2.;
    for(i = 3; i<=500; i++)
        d[i] = d[i-1] + d[i-2] + d[i-3];


    int n;
    while(scanf("%d", &n) == 1) {
        if(n == 0) return 0;
        printf("%.0lf\n", d[n]);
    }

    return 0;
}

但是提交后报错答案。我真的不知道为什么。

4

2 回答 2

2

双精度不够

你应该使用高精度来解决它

于 2013-01-28T08:37:38.950 回答
1

可能是小数点。printf("%.0lf\n", 1.0);将打印1.0,但系统可能会等待1

于 2013-01-28T09:03:35.350 回答