// arr[first] = arr[first] (itself) * arr[next];
// arr[last] = prev * arr[last] (itself);
#include <iostream>
void MultiplyNextPrevious(int arr[], int size) {
if (size <= 1)
return;
int prev = arr[0];
arr[0] = arr[0] * arr[1];
for (int i = 1; i < size - 1; i++) {
int curr = arr[i];
arr[i] = prev * arr[i + 1]; // arr[i + 1] = next
prev = curr;
}
arr[size - 1] = prev * arr[size - 1];
}
int main()
{
int arr[] = {2, 3, 5, 6, 12, 8, 10, 7};
int size = sizeof(arr) / sizeof(arr[0]);
MultiplyNextPrevious(arr, size);
for (int i = 0; i < size; i++)
std::cout << arr[i] << " ";
}
/*
run:
6 10 18 60 48 120 56 70
*/