3 回答

TA貢獻1875條經(jīng)驗 獲得超5個贊
def f(x):
n1, n2, n3 = x//3, x//5, x//15
return 3*(n1)*(n1+1)//2+5*(n2)*(n2+1)//2-15*(n3)*(n3+1)//2
for i in range(int(input())):
print(f(int(input())-1))
這里x//3
給出了int(x/3)
類似的 forx//5
和x//15
作為LCM(3,5)=15
Σi = n(n+1)/2
答案= 3 的倍數(shù)之和 + 5 的倍數(shù)之和 - 15 的倍數(shù)之和。
對應于 ProjectEulerProblem #1 的解決方案
注意:我在 StackOverflow 上分享代碼的目的是讓人們知道給定問題可以通過多種方式解決。
由于 timeError,一個人總是很難通過所有案例。
不要用作答案,但要學習。

TA貢獻1796條經(jīng)驗 獲得超4個贊
您多算了 15 的倍數(shù)。解決此問題的一種方法是只使用一個循環(huán)來檢查數(shù)字是 3 還是 5 的倍數(shù)。
solution = 0
for i in range(1000):
if i % 3 == 0 or i % 5 == 0:
solution += i
print(solution)

TA貢獻1797條經(jīng)驗 獲得超6個贊
Devesh Kumar Singh的評論解決了這個問題:
因為您將 3 和 5 的倍數(shù)計算兩次,例如
15
. 添加一個循環(huán)來減去這些值,例如for x in range(0,1000,15): a = a - x
添加回答
舉報