BZOJ4128: Matrix 矩阵BSGS
来源:互联网 发布:skype for ubuntu 14 编辑:程序博客网 时间:2024/06/05 00:52
A^x=B(mod C)
令x=im-j
A^(im)=BA^j(mod C)
这就不用求逆元了
#include<bits/stdc++.h>#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<iostream>#include<math.h>#include<set>#include<map>#include<vector>#include<iomanip>using namespace std;#define ll long long#define ull unsigned long long#define pb push_back#define FOR(a) for(int i=1;i<=a;i++)const int inf=0x3f3f3f3f;const ll Linf=9e18;const int maxn=1e6+7; const ll mod=1e9+7;const double eps=1e-6;#define base 231ll n,p;struct MATRIX{ll x[80][80];void init(){memset(x,0,sizeof x);}MATRIX operator * (MATRIX a){MATRIX ret;ret.init();FOR(n)for(int j=1;j<=n;j++){for(int k=1;k<=n;k++)ret.x[i][j]=ret.x[i][j]+x[i][k]*a.x[k][j];ret.x[i][j]%=p;}return ret;}ll Hash(){ll ret=0;FOR(n)for(int j=1;j<=n;j++){ret=(ret*base+x[i][j])%mod;}return ret;}void read(){FOR(n)for(int j=1;j<=n;j++)scanf("%lld",&x[i][j]),x[i][j]%=p;}void build(){init();FOR(n)x[i][i]=1;}}A,B,E;map<ll,ll>mp;void BSGS(){mp.clear();ll m=ceil(sqrt(p));MATRIX ans;for(int i=0;i<=m;i++){if(i==0){ans=B;mp[ans.Hash()]=i;continue;}ans=ans*A;mp[ans.Hash()]=i;}MATRIX tmp=E;FOR(m)tmp=tmp*A;//A^(im)=BA^j(mod C)ans=E;FOR(m){ans=ans*tmp;if(mp[ans.Hash()]){ll ret=i*m-mp[ans.Hash()];printf("%lld\n",(ret%p+p)%p);return;}}}int main(){scanf("%lld%lld",&n,&p);A.read();B.read();E.build();BSGS();}
阅读全文
0 0
- BZOJ4128: Matrix 矩阵BSGS
- bzoj4128 Matrix BSGS&hash
- [BZOJ4128]Matrix(BSGS+矩乘)
- 【BZOJ4128】Matrix,拔山盖世的矩阵乘法+随机化
- bzoj4128 Matrix
- BZOJ 4128 Matrix BSGS+矩阵求逆
- BZOJ_P4128 Matrix(矩阵乘法+快速幂+BSGS)
- [BSGS 矩阵 随机化] BZOJ 4128 Matrix
- bzoj 4128: Matrix BSGS+矩阵乘法
- BZOJ 4128: Matrix BSGS 矩阵乘法
- 矩阵Matrix
- Matrix 矩阵
- 矩阵(Matrix)
- Matrix矩阵
- 矩阵(Matrix)
- BSGS
- 矩阵类 Matrix
- 理解矩阵Matrix
- 一些php项目中比较通用的php自建函数的详解
- PostgreSQL 9.5.2 数据库说明
- Python基础学习-MariaDB基础学习
- git命令大全
- NOIP2015子串(洛谷2679)
- BZOJ4128: Matrix 矩阵BSGS
- 使用artTemplate模板开发网站(node.js + express环境)
- 普通冒泡排序法与通用冒泡排序法(C语言)
- 快速理解:JDK8 default 函数 和 Opetional<T> 作用
- Call to undefined method Illuminate\Database\Query\Builder::links()
- Linux初窥:系统管理之(进程管理、定时任务、系统监控)
- Hadoop大数据生态系统及常用组件简介
- oracle数据库内存结构pga/sga/uga做比较分析
- win10下vs2013+CUDA8.0+cuDNN8.0的caffe编译过程