日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客14607 递推(矩阵快速幂构造)

發布時間:2024/7/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客14607 递推(矩阵快速幂构造) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/problem/14607
來源:牛客網

時間限制:C/C++ 2秒,其他語言4秒
空間限制:C/C++ 131072K,其他語言262144K
64bit IO Format: %lld

題目描述

JYM和XJ轉眼就從小學上了高中。在學習遞推的時候,JYM在紙上隨手寫了一個遞推關系式:an=2an-1,a0=0。寫完這個遞推式,JYM拿給XJ看,XJ覺得太過簡單,于是大筆一揮,在等式右邊又加了一個式子,變成了這樣:an=2an-1+n2。JYM看到這個式子,想要算幾個項來看看,可是一算就發現這個數據量太大了,你能幫他解決這個問題嗎?

輸入描述:

輸入數據有多組(不超過100組數據),每組數據包含一個整數N<=10^18

輸出描述:

一個整數X,表示遞推式第n項的值。由于數字太大,因此結果對于1000000009取模后輸出。


構造出來的基矩陣base:

GLOBAL_MOD = 1000000009 class Solution:def f(self, n: int) -> int:if n < 2:return nres = self.matrixpower(n-1)res = res[0][0]+res[0][1]+res[0][2]+res[0][3]res = res % GLOBAL_MODreturn resdef matrixpower(self, power):# res初始值為單位矩陣res = [[1, 0, 0, 0],[0, 1, 0, 0],[0, 0, 1, 0],[0, 0, 0, 1]] base = [[2, 1, 2, 1],[0, 1, 2, 1],[0, 0, 1, 1],[0, 0, 0, 1]] # 這個是我們構造的矩陣 while power !=0:if power&1 !=0:res = self.multimatrix(res, base)power = power>>1base = self.multimatrix(base, base)return resdef multimatrix(self, m1, m2):n = len(m1)res = [[0]*n for i in range(n)]for i in range(n):for j in range(n):for k in range(n):res[i][j] = (res[i][j]+m1[i][k] * m2[k][j])%GLOBAL_MODreturn res while True:try:n = int(input())ans = Solution()print(ans.f(n))except:break

總結

以上是生活随笔為你收集整理的牛客14607 递推(矩阵快速幂构造)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。