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;
}
相關文章
- 矩陣乘法矩陣
- 斐波那契數列Ⅳ【矩陣乘法】矩陣
- cuda 加速矩陣乘法矩陣
- 【Triton 教程】矩陣乘法矩陣
- MKL庫矩陣乘法矩陣
- 【矩陣乘法】Matrix Power Series矩陣
- 【矩陣乘法】【快速冪】遞推矩陣
- POJ 3613 Cow Relays 矩陣乘法Floyd+矩陣快速冪矩陣
- 想學人工智慧,先從理解矩陣乘法開始人工智慧矩陣
- 怎樣用python計算矩陣乘法?Python矩陣
- CUDA 矩陣乘法終極優化指南矩陣優化
- torch中向量、矩陣乘法大總結矩陣
- 線性代數 - 矩陣形式下的最小二乘法矩陣
- bzoj2875: [Noi2012]隨機數生成器(矩陣乘法)隨機矩陣
- 04 矩陣乘法與線性變換複合矩陣
- 人工智慧數學基礎—-矩陣人工智慧矩陣
- 人工智慧數學基礎----矩陣人工智慧矩陣
- bzoj4547: Hdu5171 小奇的集合(矩陣乘法)矩陣
- bzoj4887: [Tjoi2017]可樂(矩陣乘法+快速冪)矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- MPI矩陣向量乘法程式碼《並行程式設計導論》矩陣並行行程程式設計
- 高等代數1 矩陣矩陣
- 線性代數--矩陣矩陣
- 如何用GSL數學庫求解矩陣方程組?矩陣
- 數學建模例題2.28 矩陣合併示例矩陣
- 數學建模例題例 2.29 矩陣分割示例矩陣
- 數學建模例題2.30 矩陣元素求和示例矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣的乘法運算與css的3d變換(transform)矩陣CSS3DORM
- 洛谷P3193 [HNOI2008]GT考試(dp 矩陣乘法)矩陣
- 脈動陣列在二維矩陣乘法及卷積運算中的應用陣列矩陣卷積
- 矩陣指數的定義矩陣
- 跟我一起學《深度學習》 第二章 線性代數(2.3 單位矩陣和逆矩陣)深度學習矩陣
- 【矩陣基礎與維度分析】【公式細節推導】矩陣非線性最小二乘法泰勒展開矩陣公式
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 數學建模作業