目錄
一.題目
題目描述 輸入
輸出樣例輸入
樣例輸出 提示
二.題解
三.**
謝謝!tr非常喜歡數學,經常乙個人拿出草稿紙研究奇奇怪怪的數學問題,最近,他突然對數列產生了興趣,他找到乙個數列,類似於斐波拉契,即:tn=1*f1+2*f2+3*f3+……+n*fn (fn為斐波拉契的第n項值)
現在tr想請你幫忙求tn%m的值
兩個用空格隔開的整數n和m
tn mod m的值
5 5樣例解釋:
t5 = (1*1+2*1+3*2+4*3+5*5)%5 = 46%5 = 1
這道題可以說不難也不簡單,有很多種方法,我這裡只講一種,感興趣的可以把你的方法發給我喲!
這道題要求的是
但是這不是我們想要的結果,於是我又想,我們可以這樣得到(1*f1+2*f2+3*f3+……+n*fn):
對於n = 5時:
得到這個矩陣:
減去tn即答案。
遞推式:
就這樣就完了。
#include #include #include using namespace std;
#define ll long long
ll n, m, ans;
struct node
}a, b, c;
inline void prepare (node &ans)
inline node qkpow (node x, ll y)
return ans;
}int main ()
模板 矩陣加速(數列)
題目描述 a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。輸入輸出樣例 輸入 136 810輸出 149 ...
矩陣加速數列遞推
zoj problem set 3690 code include include using namespace std struct matrix matrix matrix operator const matrix t const undef mod undef maxn int main ...
模板 矩陣加速(數列)(矩陣加速遞推)
a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。矩陣加速裸題 和我的前一篇基本一模一樣 只不過改變了要乘的...