HDU4565 So Easy! (矩陣)
題目連結:
http://acm.hdu.edu.cn/showproblem.php?pid=4565
題意:
求 f(x) = ceil( (a +sqrt(b))^n )
我們設An = (a +sqrt(b))^n , Bn =(a - sqrt(b))^n;
Cn = An +Bn;
因為An, Bn共軛,所以Cn是一個整數
根據題意, (a-1)^2 < b < a^2 ==> a-1 < sqrt(b) < a;
因此Cn = ceil( An )
Cn * [(a + sqrt(b)) +(a - sqrt(b))]
==> (a +sqrt(b))^(n+1) +(a +sqrt(b))^(n+1) + (a +sqrt(b))*(a -sqrt(b))^(n)+(a -sqrt(b))*(a +sqrt(b))^(n)
==> Cn+1 + (a*a - b)Cn-1
==> Cn+1 = 2*aCn + (b-a*a)*Cn-1;
公式推出來了剩下的就直接用矩陣加速就搞定了
程式碼如下:
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
ll mod;
const int N=2;
struct Matrix
{
ll m[N][N];
};
Matrix I={
1,0,
0,1
};
Matrix multi(Matrix a,Matrix b)
{
Matrix c;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
c.m[i][j]=0;
for(int k=0;k<N;k++){
c.m[i][j]+=a.m[i][k]*b.m[k][j]%mod;
}
c.m[i][j]%=mod;
}
}
return c;
}
Matrix pow(Matrix a,ll n)
{
Matrix ans=I;
Matrix p=a;
while(n){
if(n&1){
ans=multi(ans,p);
n--;
}
n>>=1;
p=multi(p,p);
}
return ans;
}
int main()
{
ll a,b,n,ret;
Matrix aa,ans;
while(cin>>a>>b>>n>>mod){
aa.m[0][0]=2*a%mod;
aa.m[0][1]=((b%mod-a*a%mod)+mod)%mod;
aa.m[1][0]=1;
aa.m[1][1]=0;
if(n==1){
cout<<2*a%mod<<endl;
continue;
}
ans=pow(aa,n-2);
ret = (ans.m[0][0]%mod*2*(a*a%mod+b%mod)%mod +
2*a%mod*ans.m[0][1]%mod)%mod;
cout<<ret%mod<<endl;
}
return 0;
}
相關文章
- HDU 4565 So Easy!(矩陣快速冪)矩陣
- HDU 4565 So Easy!(公式化簡+矩陣)公式矩陣
- 【構造共軛函式+矩陣快速冪】HDU 4565 So Easy! (2013 長沙賽區邀請賽)函式矩陣
- so easy 前端實現多語言前端
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 微軟全球生態,讓遊戲出海 So Easy!微軟遊戲
- Android實現多語言so easyAndroid
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- 記住這11點,找工作變得 So easy!
- LVM與磁碟配額管理 so easy come onLVM
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 海浪矩陣矩陣
- 8.6 矩陣?矩陣
- 螺旋矩陣矩陣
- 找矩陣矩陣
- 矩陣乘法矩陣
- 快手矩陣管理平臺,矩陣管理有方法矩陣
- Wannafly模擬賽 矩陣 二維矩陣hash矩陣
- PHP擴充套件php-redis 用起來so easyPHP套件Redis
- 解決跨海高併發崩潰難題?so easy
- 這些 JavaScript函式讓你的工作更加 So Easy!JavaScript函式
- 學會這個Python庫,介面測試so easy!Python