#include <stdio.h>
#include <stdlib.h>
void product_of_every_other_elements(int arr[], int size) {
if (size == 0) {
return;
}
int *left = (int*)malloc(size * sizeof(int));
int *right = (int*)malloc(size * sizeof(int));
left[0] = 1;
for (int i = 1; i < size; i++) {
left[i] = arr[i - 1] * left[i - 1];
}
right[size - 1] = 1;
for (int j = size - 2; j >= 0; j--) {
right[j] = arr[j + 1] * right[j + 1];
}
for (int i = 0; i < size; i++) {
arr[i] = left[i] * right[i];
}
free(left);
free(right);
}
int main(void)
{
int array[] = { 1, 2, 3, 4, 5 };
int size = sizeof(array) / sizeof(array[0]);
product_of_every_other_elements(array, size);
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
return 0;
}
/*
run:
120 60 40 30 24
*/