Условие задачи:
Решение:
Для оптимизации будем использовать формулу квадрата суммы из школьной арифметики:
( a + b ) 2 = a 2 + 2 a b + b 2
def sq_sum(n):
s1=0
s2=0
ind=0
r=range(1,n+1)
for i in r:
s1+=(i**2)
s2+=(i**2)
for j in r[ind+1:]:
s1+=2*i*j
ind+=1
return s1-s2
print(sq_sum(100))
Может выглядит не особо красиво (буду учить функциональное программирование) но достаточно просто, понятно и быстро. S2 - хранит сумму квадратов, s1 - квадрат числа.
Сумма квадратов первых десяти натуральных чисел
12 + 22 + ... + 102 = 385
Квадрат суммы первых десяти натуральных чисел
(1 + 2 + ... + 10)2 = 552 = 3025
Следовательно, разность между суммой квадратов и квадратом суммы первых десяти натуральных чисел составляет 3025 − 385 = 2640.
Найдите разность между суммой квадратов и квадратом суммы первых ста натуральных чисел.
Решение:
Для оптимизации будем использовать формулу квадрата суммы из школьной арифметики:
А Другими словами квадрат суммы = сумма квадратов +2*попарное умножение каждого из агрументов.
Реализация на Python:
r=range(1,n+1)
for i in r:
s1+=(i**2) #Прибавляем квадрат числа к сумме
for j in r[ind+1:]:
s1+=2*i*j #Умножаем число ка последующие аргументы списка
Вышло все достаточно быстро:
Может выглядит не особо красиво (буду учить функциональное программирование) но достаточно просто, понятно и быстро. S2 - хранит сумму квадратов, s1 - квадрат числа.