bzoj2875: [Noi2012]随机数生成器 裸矩阵乘法
来源:互联网 发布:立体设计图软件 编辑:程序博客网 时间:2024/05/17 04:55
裸题,注意细节就可以了,不再赘述。
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>using namespace std;typedef long long sint;struct matrix{ sint a[2][2]; void cl() { memset(a,0,sizeof(a)); }};sint x0,a,c,g,m,n;sint mul(sint X,sint Y){ sint re=0; while(Y) { if(Y&1) re+=X,re=(re>m?re-m:re); X+=X,X=(X>m?X-m:X); Y>>=1; } return re;}matrix operator * (matrix aa,matrix bb){ matrix cc;cc.cl(); for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { for(int k=0;k<2;k++) { cc.a[i][j]+=mul(aa.a[i][k],bb.a[k][j]); if(cc.a[i][j]>m) cc.a[i][j]-=m; } } } return cc;}sint quick(){ matrix res; res.cl(); res.a[0][0]=1;res.a[1][1]=1; matrix x,y;x.cl();y.cl(); x.a[0][0]=x0;x.a[0][1]=c; y.a[0][0]=a;y.a[1][0]=y.a[1][1]=1; while(n) { if(n&1) { res=res*y; } y=y*y; n>>=1; } x=x*res; return x.a[0][0]%g;}int main(){ //freopen("random20.in","r",stdin); cin>>m>>a>>c>>x0>>n>>g; a%=m;c%=m; cout<<quick(); return 0;}
0 0
- bzoj2875: [Noi2012]随机数生成器 裸矩阵乘法
- [BZOJ2875]NOI2012随机数生成器|矩阵乘法
- [BZOJ2875][NOI2012]随机数生成器(矩阵乘法)
- BZOJ2875: [Noi2012]随机数生成器 矩阵乘法+快速乘
- BZOJ2875: [Noi2012]随机数生成器 矩阵乘法+快速乘
- bzoj2875 [Noi2012]随机数生成器 [矩阵+快乘]
- [BZOJ2875][Noi2012]随机数生成器 && 矩阵+快速乘
- [BZOJ2875] [NOI2012] 随机数生成器 - 矩阵快速幂
- 【BZOJ2875】[Noi2012]随机数生成器【矩阵快速幂】
- bzoj2875 [noi2012]随机数生成器(矩阵倍增)
- [bzoj2875][Noi2012]随机数生成器
- [BZOJ2875][Noi2012]随机数生成器
- 【NOI2012】【BZOJ2875】随机数生成器
- BZOJ2875 [Noi2012]随机数生成器
- bzoj2875 [Noi2012]随机数生成器
- 【NOI2012】随机数生成器【矩阵乘法】
- BZOJ 2875 NOI2012 随机数生成器 矩阵乘法
- 【BZOJ 2875】[Noi2012]随机数生成器 矩阵乘法
- phalcon 设定数据库参数
- UICollectionView-使用Flow Layout
- iOS 点击状态栏回滚scrollView顶部
- navicat修改表的属性
- Fiddler工具的使用
- bzoj2875: [Noi2012]随机数生成器 裸矩阵乘法
- exit(0),exit(1),exit(-1)的区别?
- leetcode-二分搜索:求一个数的平方根
- HDU 1026
- “赢在中国”点评人给80后年轻人的30个忠告
- kafka 使用技巧
- java初学1
- android:scaleType设置失效的问题解决
- jQuery中DOM和CSS操作