#include #include int main() { // Initialize arrays for our Fibonacci values - now each holds two digits (0-99) unsigned char array1[40] = {0}; unsigned char array2[40] = {0}; // Create pointers for easier swapping unsigned char *current = array2; unsigned char *previous = array1; unsigned char *temp; // Set initial value to 1 current[39] = 1; for (int i = 0; i < 383; i++) { // Calculate the next Fibonacci number directly into previous array int carry = 0; for (int j = 39; j >= 0; j--) { // Use temporary variable to avoid extra memory reads/writes int sum = previous[j] + current[j] + carry; carry = 0; if (sum >= 100) { sum -= 100; carry = 1; } previous[j] = sum; } // Swap pointers instead of copying memory temp = previous; previous = current; current = temp; // Print the current Fibonacci number printf("|"); for (int j = 0; j < 40; j++) { // Unpack the double-digits with leading zeros printf("%02d", current[j]); } printf("|\n"); } return 0; }