簡體   English   中英

如何知道python前面代碼中的值?

[英]how know value in the previous code in python?

v = ??
my_range = list(range(v))
print(sum(my_range, v) + pow(v, v, v)) 

我想知道得到值 output=820

您可以在預期的整數范圍內嘗試二進制斬波:

def fn(v):
    my_range = list(range(int(v)))
    return sum(my_range, v) + pow(v, v, v)

a = 1
b = 100
r = 0

while True:
    v = (a + b) // 2
    r = fn(v)
    print(v, r)
    if r == 820:
        break
    elif r > 820:
        b = v
    else:
        a = v

結果:

50 1275
25 325
37 703
43 946
40 820

這基本上是數學:

my_range = [0, 1, 2, 3, ..., v - 1]

sum(my_range, v)1 + 2 + 3 + ... + v相同。

pow(v, v, v) = v^v % v = 0 ,因為 v * v * v * .... 必須是 v 的倍數,所以 mod 為 0。

因此,我們正在求解1 + 2 + 3 + ... + v = 820

使用求和公式(∑x 從 i=1 到 n = n(n+1)/2 ):

v(v+1)/2 = 820 -> v(v+1) = 1640 -> v^2 + v - 1640 = 0

(v - 40)(v + 41) = 0

v = 40

如果 N 是一個連續的正整數范圍(從 1 開始)的總和,則該范圍內的最大數字可以表示為 N * 2 的平方根(向下舍入到最接近的整數)

所以:

N = 820

print(int((N*2)**0.5))

輸出:

40

筆記:

連續數字范圍(從 1 開始)到 N 結束的總和可以通過以下方式計算:

(N * (N+1)) // 2

...因此這里顯示的“反向”方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM