這道題真是遇到問題了……果然……我寫的慢了,超時了……TLE……好久沒用這詞了~
注意……這個超時,是指超過了1min……擦……
題目很簡單,就是讓你找最小的D出來~
哎……python的in操作我估計是很慢的……因爲根本不知道你的list是否有序,那麼就一個一個找吧……
def main():
min = 2147483647
p = [n*(3*n-1)//2 for n in range(1, 3000)]
length = len(p)
for i in range(length):
for j in range(i+1, length):
if (p[i]+p[j]) in p and (p[j]-p[i]) in p:
if (p[j]-p[i]<min):
min = p[j] - p[i]
print(min)
if __name__ == '__main__':
main()
我寫的……多麼質樸……
好……上個秒出的大神的……
from itertools import *
from math import *
from operator import *
def pentagonal(n):
return n*(3*n-1)//2
def main():
pentagonals = set(pentagonal(n) for n in range(1, 3000))
c = combinations(pentagonals, 2)
for p in c:
if add(*p) in pentagonals and abs(sub(*p)) in pentagonals:
print(abs(sub(*p)))
if __name__ == "__main__":
main()
實在是不敢相信……實在是秒出……
這裏的combinations是兩兩組合……任意兩個~這個玩意太強大了……直接讓人快哭了……
算了……我也不明白爲什麼這麼快……哎……節哀……