[英]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.