加速双重求和的最佳方法

0 投票
1 回答
549 浏览
提问于 2025-04-18 03:10

我的代码可以正常运行,但我希望它能在1秒钟内完成。我要怎么做呢?

这个求和的示意图

import math
import time

t=time.time()
line = input().split(' ')
Alen = int(line[0])
Blen = int(line[1])

A = input().split(' ')
B = input().split(' ')

total=0
for i, Ai in enumerate(A):
    for j, Bj in enumerate(B):
       total+= abs((int(Ai)-int(Bj)))*(int(i)-int(j))

print(total)#, time.time()-t)

1 个回答

2

这样应该会快一点;不过没有一些样本数据的话,无法准确知道快了多少。

import time

def get_ints(s):
    return [int(i) for i in s.split()]

t = time.time()

Alen, Blen = get_ints(input())
A = get_ints(input())
B = get_ints(input())

total = sum(abs(Ai - Bj) * (i - j) for i,Ai in enumerate(A) for j,Bj in enumerate(B))

print(total)#, time.time()-t)

撰写回答