#83 Aunque calcules c y d en el mismo bucle, estas realizando dos multiplicaciones en cada paso... Por lo tanto el numero de operaciones es 2n, independientemente de que lo hagas en un bucle o en dos...
#83 Si lo hace(en forma de no multiplicar el elemento i, que para eso pone No divisions are allowed.), mira, te hago un mini-seguiemiento, pero si lo vas haciendo tu entero veras que si sale:
Lo que hay que hacer es esto bi = a1*a2*...*an/ai.
Yo al terminar de "ir en la recursividad" tengo en m a1*a2*...*an, y al volver de reursividad
a bn le asigno a1*a2*...*an-1
.
.
.
a b5 le asigno a1*a2*...*a4
a b4 le asigno a1*a2*...*a3
etc.
Sobre lo que dices sobre la memoria, yo del enunciado lo que entiendo es que no quieren que andes copiando/duplicando el array, no que tenga que ser economico en memoria, de hecho no se como se podria hacer con un bucle y que la complejidad sea O(n).
Si sabes como o tienes la idea comentala, que esta curioso el problema este.