這個題目上週對抗賽題目,搞了我好久 對數學這種不是很敏感
其實都不是自己想出來的,看其他的資料和部落格的推導 還是有點難度的,反正我是推不出來
通過二項式定理的化簡
有兩個部落格寫得比較好
反正構造好二項式之後,乘n次,就可以得到結果了,因為右邊的式子 初始全部是x。
#include #include#include
#define ll __int64
using
namespace
std;
const
int maxn = 52
;ll c[maxn][maxn], a[maxn][maxn], b[maxn][maxn], t[maxn][maxn];
ll n,x,m;
void
init()
}memset(a,
0, sizeof
(a));
for (i = 0; i <= x; i++)
}memcpy(a[x+1], a[x], sizeof
(a[x]));
a[x+1][x+1] = 1
; memset(b,
0, sizeof
(b));
for (i = 0; i <= x+1; i++)
}void mul(long
long p[maxn][maxn], long
long
q[maxn][maxn])}}
memcpy(q, t,
sizeof
(t));
}void
cal()
mul(a, a);
n >>= 1
; }
}int
main()
return0;
}
hdu 3483 矩陣構造
這道題寒假的時候看過,還不小心看了題解,不過題解說神馬早就忘了,剛開始解題的時候完全想錯了,後來才想起來是用矩陣構造 這道題的確適合構造矩陣,因為所求的函式值滿足線性關係,令f n 為最終求解值 首先我們要明確如果用矩陣的作法,那麼矩陣乘法中,最終矩陣,必須包含f n 還可以包含其他函式g n h ...
hdu4920(矩陣 乘法)
題意 矩陣乘法,在乘的過程中每個元素都取模3 在比賽時,我一直在想怎麼才能把o n n n 的時間複雜度給降下來,可是一直沒想到好的辦法,後來看了題解後才知道原來時間複雜度還是o n n n 只是優化了一點而已 如下 include include include include include i...
HDU4920 矩陣乘法
嗯嗯 就算是水題吧。縮完行就15行 題意 兩個n n的矩陣相乘 n 800 結果對3取模 思路 先對3取模,所以兩個矩陣裡面會出現很多0,所以可以先列舉乙個矩陣,只有當該位置不是0的時候才和另乙個矩陣做乘法。取模的時候也有技巧,不要在計算的途中取模,應該讀入的時候取一次模,輸出的時候取一次模 計算量...