簡體   English   中英

如何使用皮薩諾周期確定計算斐波那契數和的最后一位數字的范圍?

[英]How to determine the range to calculate the last digit of the sum of Fibonacci numbers using Pisano Period?

我已經解決了這個問題。 如果我理解正確,邏輯如下:因為我們需要斐波那契數和的最后一位數字,我們可以使用:

𝐹n mod 10 == (𝐹n % Pisano 10) mod 10

我的問題是總和的范圍。 我不知道如何找到它。 由於 Pisano 10 = 60,最后一位數字以 60 為周期重復,所以我不需要計算從 0 到 N 的斐波那契值,但我不知道如何確定這個范圍。

我找到了這個問題的解決方案,但我從來不明白他們是如何找到他們的范圍的。 例如:

原文在這里

def sum_fib_last(n):
    if(n <= 1):
        return n

    previous = 0
    current  = 1

    rem = n % 60 #60 is Pisano period of 10

    for i in range(2, rem + 3): 
        
        previous, current = current, (previous + current) % 60
  
    return(current-1) % 10

我不知道為什么范圍是從 (2 到 rem+3) 以及為什么我們返回斐波那契值減去 1。類似的解決方案

此解決方案使用不同的范圍:

def last_digit(n):
    a, b = 0, 1
    for i in range((n + 2) % 60):
        a, b = b, (a + b) % 10
    return 9 if a == 0 else a - 1

我需要幫助來理解這些范圍是如何確定的,我不明白它們背后的邏輯。

他們應該更清楚一點。 前 n 個斐波那契數的總和是Fib(n + 2) - 1 這很容易用歸納法證明。

暫無
暫無

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

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