bzoj2326: [HNOI2011]數學作業(矩陣乘法)
題目傳送門
。
解法:
矩陣乘法啊。
設當前數為x。要加上的為i。
若i為1為數。
那麼x應該變為x*10+i。i應該變成i+1
這個過程很明顯是矩陣乘法嘛。
初始矩陣,因為有個+1,所以多一個元素表示1
X i 1
轉移矩陣
10 0 0
1 1 0
0 1 1
這樣就變成了
X*10+i i+1 1
然後100,1000,10000同理即可。
注意指數也要用longlong。
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
struct node {ll a[4][4];node() {memset(a,0,sizeof(a));}}per;
ll mod;
node jc(node a,node b,int n,int m,int p) {
node c;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=1;k<=p;k++)
c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod;
return c;
}
node pow_mod(node a,ll b) {
node ans=per;
while(b!=0) {if(b%2==1)ans=jc(ans,a,3,3,3);a=jc(a,a,3,3,3);b/=2;}
return ans;
}
int main() {
//freopen("homework.in","r",stdin);freopen("homework.out","w",stdout);
ll n;scanf("%lld%d",&n,&mod);
int len=0;ll x=n;
for(int i=1;i<=3;i++)per.a[i][i]=1ll;
while(x!=0) {x/=10;len++;}
ll st=1ll,ed=1ll;node ans;
ans.a[1][1]=0ll;ans.a[1][2]=1ll;ans.a[1][3]=1ll;
node A;
for(int i=1;i<len;i++) {
ed*=10ll;
A.a[1][1]=ed%mod;
A.a[2][1]=1ll;A.a[2][2]=1ll;
A.a[3][2]=1ll;A.a[3][3]=1ll;
ans=jc(ans,pow_mod(A,ed-st),1,3,3);
st*=10ll;
}
ed*=10ll;
A.a[1][1]=ed%mod;
A.a[2][1]=1ll;A.a[2][2]=1ll;
A.a[3][2]=1ll;A.a[3][3]=1ll;
ans=jc(ans,pow_mod(A,n-st+1),1,3,3);
printf("%lld\n",ans.a[1][1]);
return 0;
}
相關文章
- 矩陣乘法矩陣
- 理解矩陣乘法矩陣
- 斐波那契數列Ⅳ【矩陣乘法】矩陣
- MKL庫矩陣乘法矩陣
- cuda 加速矩陣乘法矩陣
- 【矩陣乘法】Matrix Power Series矩陣
- #100. 矩陣乘法矩陣
- 【矩陣乘法】【快速冪】遞推矩陣
- OpenCL之矩陣乘法實現矩陣
- POJ 3613 Cow Relays 矩陣乘法Floyd+矩陣快速冪矩陣
- 想學人工智慧,先從理解矩陣乘法開始人工智慧矩陣
- CUDA 矩陣乘法終極優化指南矩陣優化
- torch中向量、矩陣乘法大總結矩陣
- [轉]如何理解矩陣乘法的規則矩陣
- 線性代數 - 矩陣形式下的最小二乘法矩陣
- bzoj3240: [Noi2013]矩陣遊戲(矩陣乘法+快速冪)矩陣遊戲
- 【線性變換/矩陣及乘法】- 圖解線性代數 03矩陣圖解
- 怎樣用python計算矩陣乘法?Python矩陣
- 計算機演算法:Strassen矩陣乘法計算機演算法矩陣
- POJ3070 Fibonacci[矩陣乘法]【學習筆記】矩陣筆記
- 04 矩陣乘法與線性變換複合矩陣
- BASIC-17 / Tsinsen 1041 矩陣乘法(java)矩陣Java
- 矩陣乘法的運算量計算(華為OJ)矩陣
- 人工智慧數學基礎—-矩陣人工智慧矩陣
- 人工智慧數學基礎----矩陣人工智慧矩陣
- bzoj2875: [Noi2012]隨機數生成器(矩陣乘法)隨機矩陣
- 3.5、矩陣變數矩陣變數
- bzoj4547: Hdu5171 小奇的集合(矩陣乘法)矩陣
- UOJ 241. 【UR #16】破壞發射臺 [矩陣乘法]矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- MPI矩陣向量乘法程式碼《並行程式設計導論》矩陣並行行程程式設計
- bzoj4887: [Tjoi2017]可樂(矩陣乘法+快速冪)矩陣
- 如何用GSL數學庫求解矩陣方程組?矩陣
- 數學建模例題2.28 矩陣合併示例矩陣
- 數學建模例題例 2.29 矩陣分割示例矩陣
- 高等代數1 矩陣矩陣
- 線性代數--矩陣矩陣
- 數學建模作業