blob: 21de833d95a316a3216c19133f3ba6c3226aabcc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# Uses python3
import sys
FIB_PISANO_PERIOD_FOR_TEN = 60;
def getFibNModM(n):
r = n % FIB_PISANO_PERIOD_FOR_TEN
if r==0:
return 0
firstN = 0
secondN = 1
tempHolder = 1
for _ in range(2, r + 1):
tempHolder = (firstN + secondN) % 10;
firstN = secondN
secondN = tempHolder
# return getFibOptimized(n % p) % m
return secondN
def getLastDigit(n):
if n<=1:
return n
result = getFibNModM(n+2)
if result==0:
return 9
else:
return result -1
def getPartialSumLastDigit(m, n):
if m==n:
return getFibNModM(n)
else:
sumFn=getLastDigit(n)
if m<=1:
sumFm = 0
else:
sumFm = getLastDigit(m-1)
if sumFn>=sumFm:
return sumFn-sumFm
else:
return sumFn - sumFm + 10
if __name__ == '__main__':
input = sys.stdin.read()
tokens = input.split()
m = int(tokens[0])
n = int(tokens[1])
print(getPartialSumLastDigit(m, n))
|