Учитывая строку, p
, состоящую из строчных букв, вычислить суммирование функции
F(p) = [len(p)**distinct(p)]%[10**9 + 7]
по всем возможным различным подстрокам F
. Поскольку результат довольно большой, выведите его по модулю 10 ** 9 + 7.
Например, для 'aba' это:
- F (a) = 1
- F (ab) = 4
- F (aba) = 9
- F (b) = 1
- F (ba) = 4
Для которого сумма равна 19.
Вот мое решение:
import os
import sys
def superFunctionalStrings(s):
a=list()
thesum=0
length = len(s) + 1
modu=10**9 + 7
for j in range(length):
for i in range(j+1, length):
b = s[j:i]
if b not in a:
a.append(b)
thesum += (len(b)**len(set(b)))%(modu)
summ = thesum%(modu)
return(summ)
Что я могу сделать, чтобы оптимизировать его, чтобы тайм-аут не возник? (Я предполагаю, что внешние библиотеки не допускаются)