要注意的有两点,第一个是打表(init()函数),第二个是输出格式,用long long int会错,__int64比较好,输出printf("%I64d", x);
笔者用的是G++
代码:
#include<cstdio>
using namespace std;
__int64 arr[51];
void init()
{
arr[0] = 0;
arr[1] = 1;
for(int tmp = 2; tmp <= 50; ++tmp)
{
arr[tmp] = arr[tmp-1] + arr[tmp-2];
}
}
int main()
{
int num;
init();
while(scanf("%d", &num) && num >= 0)
{
printf("%I64d\n", arr[num]);
}
return 0;
}
如果选择C++而不是G++,下面的代码是Output Limit Exceeded
#include<cstdio>
using namespace std;
long long int arr[51];
void init()
{
arr[0] = 0;
arr[1] = 1;
for(int tmp = 2; tmp <= 50; ++tmp)
{
arr[tmp] = arr[tmp-1] + arr[tmp-2];
}
}
int main()
{
int num;
init();
freopen("in.txt", "r", stdin);
while(scanf("%d", &num) && num >= 0)
{
printf("%lld\n", arr[num]);
}
return 0;
}