Вычисление формулы

Будьте добры, напишите на C++ циклический алгоритм к приведённой на рисунке задачи. То бишь, поделитесь, пожалуйста, точкой зрения, как выглядит цикл, который перебирает компоненты таким образом, чтобы удовлетворить данное условие.

Условие задачи

Моя идея использования вложенных циклов результировалась в неуместную последовательность:

#include <iostream>

using namespace std;

int main()
{ int i,j,res=0, n;
cin >> n; cout << endl;
srand(time(0));
int* a = new int [n];

for (i=0; i<n; i++)
{ a[i]=rand()%21-10;
cout << a[i] << " ";
}
cout << endl;
 
for (j=n-1; j>=0;j--)
{ 
cout << a[j] << " ";
}
cout << endl;



// В итоге последовательность: a1*a1, a1*a2, a1*a3, a1*a5, a2*a1 ...

for (i=0; i<n; i++)
{
  for (j=n-1; j>=0;j--)
  { 

    res = a[i]*a[j]; 
    cout << res << " "; }}

delete []a;
    return 0;
}

Определённые предположения с задействованием цикла while, затем нижеприведённого "скелета" циклического алгоритма...

for (var=0; var<n; var++)
{ for (i=0; i<n; i++) {}
  for (j=n-1; j>=0;j--) {}
}

...оказались так же неудовлетворительны.

Мне удалось отдельно вывести на консоль последовательность a1, a2, ..., a30 и последовательность a30, a29, ...,a1:

#include <iostream>

using namespace std;

int main()
{ int i, n;
cin >> n;
int* a = new int [n];

 for (i=0; i<n; i++)
{ a[i]=rand()%21-10;
cout << a[i] << " ";
 }
 cout << endl;
{ for (i=n-1; i>=0;i--)
cout << a[i] << " "; }

delete []a;
    return 0;
}

Решение к задаче должно являться единственным числом. Какой шаг стоит предпринять дальше?


Ответы (2 шт):

Автор решения: Igor

Непонятно, при чем тут последовательность b, упомянутая в задаче.

for (i = 0; i < n; i++)
{
  res = res + a[i] * a[n - 1 - i];
}
→ Ссылка
Автор решения: Harry

Раз уж у нас С++...

int* a = new int [n];
...
cout << inner_product(a,a+n,reverse_iterator(a+n),0);
→ Ссылка