元素乘法 - 每三个元素

时间:2013-07-10 12:24:24

标签: c++ arrays complex-numbers

我有一个包含数百个(复数)元素的数组。我需要一种方法将每三个元素相乘,并添加到下一批倍数。什么是最有效的方法?

例如;

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

也许这可以很容易地完成,但我错过了一些东西。提前致谢

1 个答案:

答案 0 :(得分:2)

假设数组的大小是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 
}