用 int* 數組存儲大整數,malloc/realloc 頻繁分配導致程序在 800 多位時卡死。
void add(char a[], char b[], char res[]) {
int lena=strlen(a), lenb=strlen(b);
int len = (lena > lenb ? lena : lenb) + 1;
char c[1200] = {0};
for (int i=1; i<=lena; i++) c[i] += a[lena-i]-'0';
for (int i=1; i<=lenb; i++) c[i] += b[lenb-i]-'0';
for (int i=1; i<=len; i++) {
if (c[i] > 9) { c[i] -= 10; c[i+1]++; }
}
while (len>1 && c[len]==0) len--;
for (int i=0; i<=len; i++) res[i] = c[len-i] + '0';
res[len+1] = '\0';
}
int main() {
char a[1200]="1", b[1200]="1", c[1200];
int i=3;
while (1) {
add(a,b,c);
if (strlen(c) >= 1000) break;
strcpy(a,b); strcpy(b,c);
i++;
}
printf("%d\n%s\n", i, c);
}