矩阵快速幂
infinity°º
stay hungry stay foolish
展开
-
hdu6030找递推关系
//每个质数长度的连续子序列中 R>=B 才行 An=An-1+An-3 //n<=4单独讨论 只要考虑2和3就可以了,因为其他任意区间都可以拆成2和3的组合,所以只要2和3满足就一定可以。 然后发现,如果新加一颗红色,只要之前的满足就可以满足,如果新加一颗蓝色,只有红红蓝这种情况下才可以,所以就有递推式F(x)=F(x-1)+F(x-3) #include<bits/stdc++.h> using namespace std; const int maxn=...原创 2021-08-05 23:03:05 · 81 阅读 · 0 评论 -
hdu5667还没写完,幂函数的处理(ksm+费马小定理)
//有幂,想到对数。把指数变为乘;乘变加 。 //把log a f(n) 看为一个整体。k[i]=b+c*k[i-1]+k[i-2] //费马小定理??还没看原创 2021-08-05 15:21:32 · 47 阅读 · 0 评论 -
hdu5015
//暴力绝对不行,只能用矩阵ksm /*ksm思想:1.第m列由第m-1列 *10+3得。把一列看成两边的两列 2.根据递推公式。即可列出中间矩阵 */ #include<bits/stdc++.h> using namespace std; const int maxn=15; typedef long long ll; ll mod=1e7+7; ll n,m,a[maxn]; typedef struct jz{ ll m[maxn][maxn]; }jz; jz m...原创 2021-08-05 13:56:54 · 111 阅读 · 0 评论 -
hdu2157
//¹Ø¼üÔÚÀëɢ֪ʶ£¬M^k #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=24; ll mod=1000; ll n,m,t,k,x,y,a[maxn]; typedef struct jz{ ll m[maxn][maxn]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;i<=.原创 2021-08-04 23:18:25 · 58 阅读 · 0 评论 -
hdu2276二维
#include<bits/stdc++.h> using namespace std; typedef long long ll; int mod=2;//由题意得只有0,1两种状态,所以mod2 ll n,k,x,y,a[107]; typedef struct jz{ ll m[107][107]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;i<=n;i++) for(int j=...原创 2021-08-04 17:42:38 · 66 阅读 · 0 评论 -
hdu3306
//xy很大所以别忘了取余 //n是矩阵的行列数,所以读入定义成k吧 #include<bits/stdc++.h> using namespace std; typedef long long ll; int mod=1e4+7; ll n=4,k,x,y,a[6]={0,2,1,1,1}; typedef struct jz{ ll m[6][6]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;...原创 2021-08-04 17:03:00 · 52 阅读 · 0 评论 -
hdu2793前n项和
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n=4,mod=1e9+7; ll l,r,a[6]={0,3,1,1,1}; typedef struct jz{ ll m[6][6]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ .原创 2021-08-04 15:43:21 · 65 阅读 · 0 评论 -
hdu6470二项式定理构造
这题不能定义mod=。。只能直接写树状,否则就会超时 //到底为啥用数组b赋值给矩阵A就错啊??还是找不到简便的赋值方法,就按这个模板写吧以后 #include<bits/stdc++.h> using namespace std; typedef long long ll; int n=6,mod=123456789;//每次for从1到n ll k,a[8]={0,2,1,8,4,2,1}; typedef struct jz{ ll m[8][8]; }jz; //前面这原创 2021-08-04 15:15:30 · 79 阅读 · 0 评论 -
hdu2604自己求f(n)的递推公式
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll k,mod,a[5]={1,2,4,6}; int n=4; typedef struct jz{ ll m[5][5]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ c.原创 2021-08-04 11:02:13 · 78 阅读 · 0 评论 -
hdu1757常数相乘
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll k,mod; int n=10; typedef struct jz{ ll m[11][11]; }jz; jz mul(jz a,jz b){ jz c; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ c.m[i][j]=0...原创 2021-08-04 11:00:52 · 68 阅读 · 0 评论 -
hdu1575矩阵快速幂模板
全用ll,以防万一数太大 #include<bits/stdc++.h> using namespace std; const int mod=9973; typedef long long ll; typedef struct jz{ ll m[13][13]; }jz;//结构体定义矩阵 作函数参数等等 好写点? int n; //对矩阵里面的数运算,所以要取余 jz mul(jz a,jz b){ jz ans; for(int i=1;i<=n;i++) fo原创 2021-08-03 17:57:28 · 70 阅读 · 0 评论