解题思路:
注意事项:
参考代码:
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二级辅导-同因查找 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:558 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:569 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:602 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:516 |
字符串问题 (C语言代码)浏览:1519 |
程序员的表白 (C语言代码)浏览:667 |
printf基础练习2 (C语言代码)浏览:646 |
K-进制数 (C语言描述,蓝桥杯)浏览:925 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:345 |