Умножение элементов — каждые три элемента

У меня есть массив из сотен (комплексное число) элементов. Мне нужен способ умножить каждые три элемента вместе и добавить к следующей партии кратных. Какой самый эффективный способ сделать это?

Например;

(myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n])

Может быть, это можно сделать довольно легко, но я что-то упустил. заранее спасибо

0

Решение

Предполагая, что размер массива кратен 3 …
Этот код работает …

long long int Ans=0;
for(int i=0;i<size; i+=3)
{
Ans += (arr[i]*arr[i+1]*arr[i+2]);
}

Если вы очень серьезно относитесь к числу умножений …
это может быть полезно ..

long long int Ans=0;
for(int i=0;i<size; i+=3)
{
if(arr[i] && arr[i+1] && arr[i+2])//check if anyone of them is zero..
Ans += (arr[i]*arr[i+1]*arr[i+2]);
}

Если размер не кратен 3, затем добавьте несколько элементов в конце, чтобы сделать его кратным 3, и инициализируйте их 1 (или же 0 в зависимости от ваших спецификаций ..) и используйте тот же метод выше.

РЕДАКТИРОВАТЬ:

Вам нужно добавить этот фрагмент над for петля.

while(size%3!=0)
{
arr[size++] = 0; //or 1
}
2

Другие решения

Других решений пока нет …