题解
#include <stdio.h>
#define swap(a, b) {\
__typeof(a) temp = a;\
a = b; b = temp;\
}
int num[2][1005] = {{1, 1}, {1, 1}}, a = 0, b = 1; //定义全局的作用,保证数组初始化元素都为0;
void big_add(int *a1, int *a2) {
a2[0] = a1[0];
for (int i = 1; i <= a2[0]; i++) {
a2[i] += a1[i];
if (a2[i] > 9) {
++a2[i + 1];
a2[i] -= 10;
}
}
if (a2[a2[0] + 1]) ++a2[0];
}
int main() {
for (int i = 3; 1; i++) {
big_add(num[a], num[b]);
if (num[b][0] == 1000) { //若第i项位数为1000位,则输出该项数
printf("%d\n", i);
break;
}
swap(a, b);
}
return 0;
}
答案
4782