Как я могу сделать это более эффективным? Как я могу измерить производительность моих программ? - PullRequest
0 голосов
/ 07 ноября 2019

Вопрос состоит в том, чтобы взять вход = n, затем взять столько входов, сколько n и вывести, как это:

image of formula

Что будет означать это:

f(1,1) → 1
f(1,2) → 3
f(1,3) → 6
f(2,2) → 2
f(2,3) → 5
f(3,3) → 3

и

answer = 1 + 3 + 6 + 2 + 5 + 3 = 20 → ans = 1+3+6+2+5+3 = 20

Я придумал следующее:

def f(l,r):
     return int((r+l)*(r-l+1)/2)

n=int(input())

def WTF(n):
   ans = 0
   S=set()
   for i in range(n):
       S.add(int(input()))
   for i2 in S:
       for i3 in S:
           if i3>=i2:
                ans += f(i2,i3)
   return ans

print(WTF(n))

Но это не было принято из-за превышения лимита времени в 1 сек. .

Как я могу сделать это быстрее?

...