Как посчитать сумму 1^3 + 2^3 - 3^3 + 4^3 + 5^3 - 6^3 + 7^3 + 8^3 - ... + n^3?

Задача, составить программу, которая получает с клавиатуры одно двузначное натуральное чётное число n и выводит на экран значение следующей суммы:

1^3 + 2^3 - 3^3 + 4^3 + 5^3 - 6^3 + 7^3 + 8^3 - ... + n^3

Попытка решения:

n, res = int(input()), 0

for i in range(1, n + 1):
    if i % 2 == 0: res += i**3
    else: res -= i**3
print(res)

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

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

попробуйте так:

res = sum(i**3 * (-1)**int(i%3==0) for i in range(1, n+1))

или ваш (слегка исправленный) вариант:

res = 0
for i in range(1,n+1):
       if i%3==0: res-=i**3
       else: res+=i**3
print(res)

Минус должен стоять перед элементами кратными трем. В вашем решении вы ставите минус перед четными элементами.

→ Ссылка
Автор решения: OPTIMUS PRIME

Предлагаю использовать  магию  математику xD

1^3 + 2^3 - 3^3   +   4^3 + 5^3 - 6^3   +   7^3 + 8^3 - 9^3   + ... + n^3 =

// Дополнительно добавить и вычесть +3^3 - 3^3 + 6^3 - 6^3 + 9^3 - 9^3...

(1^3 + 2^3 + 3^3 + 4^3 + ... n^3) - 2 * (3^3 + 6^3 + 9^3 ...) = ...

Для первой части есть прикольная формула:

1^3 + 2^3 + 3^3 + ... + n^3 = (1 + 2 + 3 + ... + n)^2 = (n(n + 1)/2)^2

Осталось разобраться со второй:

* k — ближайшее снизу число к n, которое нацело делится на 3.

    3^3     +     6^3     +     9^3 ...    +     k^3 = 
    / \           / \           / \              / \
(3^3 * 1^3) + (3^3 * 2^3) + (3^3 * 3^3) ... + 3^3 * (k/3)^3 =

3^3 * (1^3 + 2^3 + 3^3 ... + (k/3)^3)
2 * (3^3 + 6^3 + ...k^3) = 2 * 27 * (1 + 2 + ... + k/3)^2

Python:

n = int(input())

div_3 = n // 3   # оно же, k/3

print( (n * (n + 1) / 2) ** 2 - 54 * (div_3 * (div_3 + 1) / 2) ** 2 )
→ Ссылка