У меня есть массив из сотен (комплексное число) элементов. Мне нужен способ умножить каждые три элемента вместе и добавить к следующей партии кратных. Какой самый эффективный способ сделать это?
Например;
(myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n])
Может быть, это можно сделать довольно легко, но я что-то упустил. заранее спасибо
Предполагая, что размер массива кратен 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
}
Других решений пока нет …