有公式 f(n)-f(3)-f(4)-f(5)-…-f(n-3)-f(n-2)=(n+4)(n-1)/2,f(1)=1,f(2)=1。
要你求前 n 項和。
這道題我們可以化公式變成 f(n)=f(n-1)+f(n-2)+n+1。
首先,我們可以移項得到:f(n)=f(3)+f(4)+f(5)+…+f(n-3)+f(n-2)+(n+4)(n-1)/2
然後把後面的那個拆開,得到:f(n)=f(3)+f(4)+f(5)+…+f(n-3)+f(n-2)+n^2/2+3n/2-2
這是 f(n),然後我們看 f(n+1),可以通過同樣的方式得到是:f(n+1)=f(3)+f(4)+f(5)+…+f(n-3)+f(n-2)+f(n-1)+n^2/2+5n/2
可以發現,相比於 f(n),多了 f(n-1) + n + 2。
那就是 f(n+1)=f(n)+f(n-1)+n+2。
然後可以變成 f(n+1)=f(n)+f(n-1)+(n+1)+1。
然後如果要求 f(n),那就是 f(n)=f(n-1)+f(n-2)+n+1。(就是把 n+1 全部變成 n)
然後就得到了我們要的。
然後就用矩陣乘法算,之前寫過一樣的公式。
——>點我檢視<——
#include
#define mo 1000000007
#define ll unsigned long long
using
namespace std;
struct matrix a, b, ans, re;
ll n;
matrix operator
*(matrix x, matrix y)
void
jzksm
(ll now)
}int
main()
ans.n =1;
ans.m =5;
ans.a[0]
[0]=
1;ans.a[0]
[1]=
1;ans.a[0]
[2]=
3;ans.a[0]
[3]=
1;ans.a[0]
[4]=
1;a.n =5;
a.m =5;
a.a[1]
[0]=
1;a.a[0]
[1]=
1;a.a[1]
[1]=
1;a.a[2]
[1]=
1;a.a[3]
[1]=
1;a.a[2]
[2]=
1;a.a[3]
[2]=
1;a.a[3]
[3]=
1;a.a[1]
[4]=
1;a.a[4]
[4]=
1;jzksm
(n -1)
; ans = ans * b;
printf
("%lld"
, ans.a[0]
[4])
;return0;
}
幼兒園數學題II 矩陣乘法
這天,當一頭霧水的lzh同學在考場上痛哭的時候,一旁的ymw早就如切菜一樣cut掉了簡單至極的第一題,風輕雲淡的衝擊著滿分,然而最後一道題著實難道了他,畢竟是幼兒園副園長樹皮和著名毒瘤秋彪為了防止人ak而出的,可是ymw作為acrush的著名粉絲,向來以ak為目標,永不言敗,而他能不能ak就看你了 ...
矩陣乘法 快速冪 幼兒園數學題I
description 某天,幼兒園學生lzh周測數學時嚇哭了,一道題都做不出來。這下可麻煩了他馬上就會成為墊底的0分啊。他的期望也不高,做出最簡單的第一題就夠了 題目是這樣的,定義f n 根號5 1 2 n 1 當然為了凸顯題目的簡單當然不能是小數分數或無理數,f x 因此需要向上取整,當然求f ...
SSL 2513 幼兒園數學題I 矩陣乘法
time limit 10000ms memory limit 65536k total submit 62 accepted 27 case time limit 1000ms description 某天,幼兒園學生lzh周測數學時嚇哭了,一道題都做不出來。這下可麻煩了他馬上就會成為墊底的0分啊...