我有数百个(复数)元素的数组。我需要一种将每三个元素相乘并添加到下一批倍数的方法。最有效的方法是什么?
例如;
(myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n])
也许这可以很容易地完成,但我错过了一些东西。提前致谢
我有数百个(复数)元素的数组。我需要一种将每三个元素相乘并添加到下一批倍数的方法。最有效的方法是什么?
例如;
(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
}