何百もの(複素数)要素の配列があります。3 つの要素ごとに乗算し、次の倍数のバッチに加算する方法が必要です。これを行う最も効率的な方法は何ですか?
例えば;
(myArr[0]*myArr[1]*myArr[2])+(myArr[3]*myArr[4]*myArr[5]*)+(myArr[6]*...myArr[n])
多分これは非常に簡単に行うことができますが、何かが欠けています。前もって感謝します
何百もの(複素数)要素の配列があります。3 つの要素ごとに乗算し、次の倍数のバッチに加算する方法が必要です。これを行う最も効率的な方法は何ですか?
例えば;
(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
}