解题思路:
注意事项:
参考代码:
n,m,p = map(int,input().split())
# 定义快速幂,k为取模的时候使用
def fp(base, power:int, k=float('inf')):
res = 1
while power>0:
if power&1:
res *= base%k
power >>= 1
base *= base%k
return res
# 矩阵点乘
def matrix_m(n,m):
R = [[0]*len(m[0]) for i in range(len(n))]
for a in range(len(n)):
for b in range(len(m[0])):
total = 0
for c in range(len(n[0])):
total += n[a][c]*m[c][b]
R[a][b] = total
return R
# 矩阵快速幂
def m_fp(base,power):
def get(n,i):
v = [0]*n
v[i] = 1
return v
res = [get(len(base),i) for i in range(len(base))]
while power>0:
if power&1:
res = matrix_m(res,base)
power >>= 1
base = matrix_m(base,base)
return res
T = [[1,1],[1,0]]
f_m = matrix_m(m_fp(T,m-2),[[1],[1]])[0][0]
s_n = matrix_m(m_fp(T,n),[[1],[1]])[0][0]-1
#print(f_m,s_n)
print(s_n%f_m%p)
0.0分
2 人评分
蛇行矩阵 (C语言代码)浏览:742 |
WU-整除问题 (C++代码)浏览:611 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:798 |
【绝对值排序】 (C语言代码)浏览:820 |
母牛的故事 (C语言代码)浏览:715 |
水仙花 (C语言代码)浏览:1047 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:556 |
整数平均值 (C语言代码)浏览:777 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:582 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:484 |