C++ программа, для вычисления суммы последовательности

Вычислите сумму S=1 * 3 + 3 * 5 + 5 * 7+... +(2n-1)(2n+1) для заданного n


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

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

Ну, раз MBo советует использовать цикл, и в метках тоже цикл...

Пуркуа бы и не па? Итак, через цикл.

int main()
{
    int n, a[3] = {4,6,-1};
    cin >> n;
    int m = 0;
    for(int i = 0; i < 3; ++i)
        m = (m + a[i])*n;
    cout << m/3 << endl;
}
→ Ссылка
Автор решения: maestro

Дана сумма:

\sum_{k=1}^{n}{(2k+1)(2k-1)}

Раскроем скобки:

\sum_{k=1}^{n}{(4k^2-2k+2k-1)}

2k и -2k сокращаются. Далее вынесем множитель 4 за знак суммы, а сумму единиц преобразуем в n:

4\sum_{k=1}^{n}{k^2}-n

Далее, раскроем сумму квадратов чисел от 1 до n:

4\sum_{k=1}^{n}{k^2}-n=\frac{4}{6}(2n^3+3n^2+n)-n=\frac{4n^3+6n^2-n}{3}

Вот вам и ответ. Циклы не нужны!


Можно и двумя циклами. Немного адаптируем пример Harry:

int main()
{
    int n, a[3] = {-1,6,4};
    cin >> n;
    int m = 0;
    for(int i = 0; i < 3; ++i)
    {
        int p=1;
        for (int j=0; j<=i; ++j)
        {
            p *= n;
        }
        m += a[i]*p;
    }
    cout << m/3 << endl;
}
→ Ссылка